annotate lisp/hilit-chg.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children e7fd8dc3d74d 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; hilit-chg.el --- minor mode displaying buffer changes with special face
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
3 ;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 104778
diff changeset
4 ;; 2008, 2009, 2010 Free Software Foundation, Inc.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
23614
ca8cd9d60c47 Comment fix.
Karl Heuer <kwzh@gnu.org>
parents: 23289
diff changeset
6 ;; Author: Richard Sharman <rsharman@pobox.com>
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: faces
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
23101
6193531a173e Comment fix.
Karl Heuer <kwzh@gnu.org>
parents: 23046
diff changeset
9 ;; This file is part of GNU Emacs.
6193531a173e Comment fix.
Karl Heuer <kwzh@gnu.org>
parents: 23046
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94546
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94546
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94546
diff changeset
14 ;; (at your option) any later version.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 30962
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94546
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;;; Commentary:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;; A minor mode: "Highlight Changes mode".
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
27
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
28 ;; When Highlight Changes mode is enabled changes to the buffer are
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
29 ;; recorded with a text property. Normally these ranges of text are
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
30 ;; displayed in a distinctive face. However, sometimes it is
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
31 ;; desirable to temporarily not see these changes. Instead of
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
32 ;; disabling Highlight Changes mode (which would remove the text property)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
33 ;; use the command highlight-changes-visible-mode.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
34
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
35 ;; Two faces are supported: one for changed or inserted text and
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
36 ;; another for the first character after text has been deleted.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
38 ;; When Highlight Changes mode is on (even if changes are not visible)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
39 ;; you can go to the next or previous change with
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
40 ;; `highlight-changes-next-change' or `highlight-changes-previous-change'.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
41
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
42 ;; Command highlight-compare-with-file shows changes in this file
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
43 ;; compared with another file (by default the previous version of the
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
44 ;; file).
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
45 ;;
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
46 ;; The command highlight-compare-buffers compares two buffers by
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
47 ;; highlighting their differences.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
48
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; You can "age" different sets of changes by using
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
50 ;; `highlight-changes-rotate-faces'. This rotates through a series
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; of different faces, so you can distinguish "new" changes from "older"
23046
87169117f80c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 22998
diff changeset
52 ;; changes. You can customize these "rotated" faces in two ways. You can
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; either explicitly define each face by customizing
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; `highlight-changes-face-list'. If, however, the faces differ from
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
55 ;; `highlight-changes-face' only in the foreground color, you can simply set
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
56 ;; `highlight-changes-colors'. If `highlight-changes-face-list' is nil when
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; the faces are required they will be constructed from
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
58 ;; `highlight-changes-colors'.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
59
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
60 ;; You can automatically rotate faces when the buffer is saved;
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
61 ;; see function `highlight-changes-rotate-faces' for how to do this.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
62
94546
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
63 ;; The hook `highlight-changes-mode-hook' is called when
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
64 ;; Highlight Changes mode is turned on or off.
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
65 ;; When it called, variable `highlight-changes-mode' has been updated
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
66 ;; to the new value.
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
67 ;;
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;; Example usage:
94546
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
69 ;; (defun my-highlight-changes-mode-hook ()
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
70 ;; (if highlight-changes-mode
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
71 ;; (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
72 ;; (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t)
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
73 ;; ))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
76 ;; Automatically enabling Highlight Changes mode
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;; Normally, Highlight Changes mode is turned on explicitly in a buffer.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;; If you prefer to have it automatically invoked you can do it as
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;; follows.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
83
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; 1. Most modes have a major-hook, typically called MODE-hook. You
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
85 ;; can use `add-hook' to call `highlight-changes-mode'.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
86
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; Example:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;; (add-hook 'c-mode-hook 'highlight-changes-mode)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
89
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; However, this cannot be done for Fundamental mode for there is no
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; such hook.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
92
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
93 ;; 2. You can use the function `global-highlight-changes-mode'
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; This function, which is fashioned after the way `global-font-lock' works,
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; toggles on or off global Highlight Changes mode. When activated, it turns
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
97 ;; on Highlight Changes mode in all "suitable" existing buffers and will turn
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 ;; it on in new "suitable" buffers to be created.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
99
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; A buffer's "suitability" is determined by variable
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
101 ;; `highlight-changes-global-modes', as follows. If it is
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;; * nil -- then no buffers are suitable;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; * a function -- this function is called and the result is used. As
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
104 ;; an example, if the value is `buffer-file-name' then all buffers
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;; who are visiting files are suitable, but others (like dired
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 ;; buffers) are not;
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
107 ;; * a list -- then the buffer is suitable if and only if its mode is in the
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
108 ;; list, except if the first element is `not', in which case the test
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 ;; is reversed (i.e. it is a list of unsuitable modes).
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
110 ;; * Otherwise, the buffer is suitable if its name does not begin with
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 ;; ` ' or `*' and if `buffer-file-name' returns true.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
113 ;; To enable it for future sessions put this in your ~/.emacs file:
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
114 ;; (global-highlight-changes-mode t)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;; Possible bindings:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 ;; (global-set-key '[C-right] 'highlight-changes-next-change)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 ;; (global-set-key '[C-left] 'highlight-changes-previous-change)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 ;;
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
121 ;; Other interactive functions (that could be bound if desired):
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 ;; highlight-changes-mode
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
123 ;; highlight-changes-toggle-visibility
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 ;; highlight-changes-remove-highlight
23289
8825530c80cd Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 23288
diff changeset
125 ;; highlight-compare-with-file
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
126 ;; highlight-compare-buffers
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
127 ;; highlight-changes-rotate-faces
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 ;;; Bugs:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;; - the next-change and previous-change functions are too literal;
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
133 ;; they should find the next "real" change, in other words treat
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 ;; consecutive changes as one.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
137 ;;; To do (maybe), notes, ...
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 ;; - having different faces for deletion and non-deletion: is it
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 ;; really worth the hassle?
23289
8825530c80cd Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 23288
diff changeset
141 ;; - highlight-compare-with-file should allow RCS files - e.g. nice to be
8825530c80cd Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 23288
diff changeset
142 ;; able to say show changes compared with version 2.1.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 ;;; History:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
147 ;; R Sharman (rsharman@pobox.com) Feb 1998:
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 ;; - initial release as change-mode.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 ;; Jari Aalto <jari.aalto@ntc.nokia.com> Mar 1998
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
150 ;; - fixes for byte compile errors
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;; - use eval-and-compile for autoload
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ;; Marijn Ros <J.M.Ros@fys.ruu.nl> Mar 98
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 ;; - suggested turning it on by default
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ;; Eric Ludlam <zappo@gnu.org> Suggested using overlays.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ;; July 98
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 ;; - global mode and various stuff added
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 ;; - Changed to use overlays
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 ;; August 98
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
159 ;; - renamed to Highlight Changes mode.
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
160 ;; Dec 2003
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
161 ;; - Use require for ediff stuff
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
162 ;; - Added highlight-compare-buffers
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
163 ;; Mar 2008
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
164 ;; - Made highlight-changes-mode like other modes (toggle on/off)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
165 ;; - Added new command highlight-changes-visible-mode to replace the
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
166 ;; previous active/passive aspect of highlight-changes-mode.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
167 ;; - Removed highlight-changes-toggle-hook
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
168 ;; - Put back eval-and-compile inadvertently dropped
94546
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
169 ;; May 2008
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
170 ;; - Removed highlight-changes-disable-hook and highlight-changes-enable-hook
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
171 ;; because highlight-changes-mode-hook can do both.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 ;;; Code:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 (require 'wid-edit)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 ;; ====================== Customization =======================
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 (defgroup highlight-changes nil
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 "Highlight Changes mode."
24554
9a9a307e9a57 (highlight-changes): Add defgroup :version.
Dave Love <fx@gnu.org>
parents: 23614
diff changeset
180 :version "20.4"
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 :group 'faces)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 ;; Face information: How the changes appear.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 ;; Defaults for face: red foreground, no change to background,
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 ;; and underlined if a change is because of a deletion.
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
188 ;; Note: underlining is helpful in that it shows up changes in white space.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 ;; However, having it set for non-delete changes can be annoying because all
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 ;; indentation on inserts gets underlined (which can look pretty ugly!).
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
192 (defface highlight-changes
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
193 '((((min-colors 88) (class color)) (:foreground "red1"))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
194 (((class color)) (:foreground "red" ))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 (t (:inverse-video t)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 "Face used for highlighting changes."
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
197 :group 'highlight-changes)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
198 (define-obsolete-face-alias 'highlight-changes-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
199 'highlight-changes "22.1")
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 ;; This looks pretty ugly, actually. Maybe the underline should be removed.
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
202 (defface highlight-changes-delete
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
203 '((((min-colors 88) (class color)) (:foreground "red1" :underline t))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
204 (((class color)) (:foreground "red" :underline t))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (t (:inverse-video t)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 "Face used for highlighting deletions."
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
207 :group 'highlight-changes)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
208 (define-obsolete-face-alias 'highlight-changes-delete-face
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
209 'highlight-changes-delete "22.1")
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
212 ;; A (not very good) default list of colors to rotate through.
94028
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
213 (define-obsolete-variable-alias 'highlight-changes-colours
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
214 'highlight-changes-colors "22.1")
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
215
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
216 (defcustom highlight-changes-colors
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (if (eq (frame-parameter nil 'background-mode) 'light)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 ;; defaults for light background:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 '( "magenta" "blue" "darkgreen" "chocolate" "sienna4" "NavyBlue")
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 ;; defaults for dark background:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 '("yellow" "magenta" "blue" "maroon" "firebrick" "green4" "DarkOrchid"))
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
222 "Colors used by `highlight-changes-rotate-faces'.
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
223 The newest rotated change will be displayed in the first element of this list,
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 the next older will be in the second element etc.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
226 This list is used if `highlight-changes-face-list' is nil, otherwise that
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
227 variable overrides this list. If you only care about foreground
63252
f4b47991b594 (highlight-changes-colours highlight-changes-face-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 63207
diff changeset
228 colors then use this, if you want fancier faces then set
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 `highlight-changes-face-list'."
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
230 :type '(repeat color)
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
231 :group 'highlight-changes)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
232
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
233 ;; When you invoke highlight-changes-mode, should highlight-changes-visible-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
234 ;; be on or off?
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
235
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
236 (define-obsolete-variable-alias 'highlight-changes-initial-state
94159
fb8d4d8a02dc (highlight-changes-initial-state): Add WHEN to obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents: 94028
diff changeset
237 'highlight-changes-visibility-initial-state "23.1")
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
238
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
239 (defcustom highlight-changes-visibility-initial-state t
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
240 "Controls whether changes are initially visible in Highlight Changes mode.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
241
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
242 This controls the initial value of `highlight-changes-visible-mode'.
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
243 When a buffer is in Highlight Changes mode the function
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
244 `highlight-changes-visible-mode' is used to toggle the mode on or off."
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
245 :type 'boolean
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
246 :group 'highlight-changes)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
248 ;; highlight-changes-global-initial-state has been removed
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
249
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
250
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
252 ;; These are the strings displayed in the mode-line for the minor mode:
94028
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
253 (define-obsolete-variable-alias 'highlight-changes-active-string
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
254 'highlight-changes-visible-string "23.1")
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
255
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
256 (defcustom highlight-changes-visible-string " +Chg"
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
257 "The string used when in Highlight Changes mode and changes are visible.
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
258 This should be set to nil if no indication is desired, or to
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 a string with a leading space."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 :type '(choice string
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (const :tag "None" nil))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
262 :group 'highlight-changes)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
94028
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
264 (define-obsolete-variable-alias 'highlight-changes-passive-string
6ab801933124 Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents: 93626
diff changeset
265 'highlight-changes-invisible-string "23.1")
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
266
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
267 (defcustom highlight-changes-invisible-string " -Chg"
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
268 "The string used when in Highlight Changes mode and changes are hidden.
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
269 This should be set to nil if no indication is desired, or to
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 a string with a leading space."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 :type '(choice string
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (const :tag "None" nil))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
273 :group 'highlight-changes)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (defcustom highlight-changes-global-modes t
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
276 "Determine whether a buffer is suitable for global Highlight Changes mode.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277
43132
0dd2ebecd217 (highlight-changes-active-string): Default to +Chg.
Richard M. Stallman <rms@gnu.org>
parents: 43030
diff changeset
278 A function means call that function to decide: if it returns non-nil,
0dd2ebecd217 (highlight-changes-active-string): Default to +Chg.
Richard M. Stallman <rms@gnu.org>
parents: 43030
diff changeset
279 the buffer is suitable.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
43132
0dd2ebecd217 (highlight-changes-active-string): Default to +Chg.
Richard M. Stallman <rms@gnu.org>
parents: 43030
diff changeset
281 A list means the elements are major modes suitable for Highlight
0dd2ebecd217 (highlight-changes-active-string): Default to +Chg.
Richard M. Stallman <rms@gnu.org>
parents: 43030
diff changeset
282 Changes mode, or a list whose first element is `not' followed by major
0dd2ebecd217 (highlight-changes-active-string): Default to +Chg.
Richard M. Stallman <rms@gnu.org>
parents: 43030
diff changeset
283 modes which are not suitable.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
285 A value of t means the buffer is suitable if it is visiting a file and
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
286 its name does not begin with ` ' or `*'.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
288 A value of nil means no buffers are suitable for `global-highlight-changes-mode'
41701
d1ec9ab9d09d Doc fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41575
diff changeset
289 \(effectively disabling the mode).
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
68524
2f9b0e4b3a95 (highlight-changes-initial-state, highlight-changes-global-initial-state):
Juanma Barranquero <lekktu@gmail.com>
parents: 64895
diff changeset
291 Example:
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
292 (c-mode c++-mode)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 means that Highlight Changes mode is turned on for buffers in C and C++
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 modes only."
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
295 :type '(choice
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (const :tag "all non-special buffers visiting files" t)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (set :menu-tag "specific modes" :tag "modes"
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 :value (not)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (const :tag "All except these" not)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (repeat :tag "Modes" :inline t (symbol :tag "mode")))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (function :menu-tag "determined by function"
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 :value buffer-file-name)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (const :tag "none" nil)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 )
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
305 :group 'highlight-changes)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (defcustom highlight-changes-global-changes-existing-buffers nil
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
308 "If non-nil, toggling global Highlight Changes mode affects existing buffers.
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
309 Normally, `global-highlight-changes' affects only new buffers (to be
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
310 created). However, if `highlight-changes-global-changes-existing-buffers'
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
311 is non-nil, then turning on `global-highlight-changes' will turn on
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
312 Highlight Changes mode in suitable buffers, and turning the mode off will
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 remove it from existing buffers."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 :type 'boolean
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 :group 'highlight-changes)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
317 ;; These are for internal use.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
318
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
319 (defvar hilit-chg-list nil)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
320 (defvar hilit-chg-string " ??")
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
321
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
322 (make-variable-buffer-local 'hilit-chg-string)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
323
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
324
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
325
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
326 ;;; Functions...
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
327
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
328 ;;;###autoload
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
329 (define-minor-mode highlight-changes-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
330 "Toggle Highlight Changes mode.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
331
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
332 With ARG, turn Highlight Changes mode on if and only if arg is positive.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
333
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
334 In Highlight Changes mode changes are recorded with a text property.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
335 Normally they are displayed in a distinctive face, but command
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
336 \\[highlight-changes-visible-mode] can be used to toggles this
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
337 on and off.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
338
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
339 Other functions for buffers in this mode include:
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
340 \\[highlight-changes-next-change] - move point to beginning of next change
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
341 \\[highlight-changes-previous-change] - move to beginning of previous change
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
342 \\[highlight-changes-remove-highlight] - remove the change face from the region
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
343 \\[highlight-changes-rotate-faces] - rotate different \"ages\" of changes
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
344 through various faces.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
345 \\[highlight-compare-with-file] - mark text as changed by comparing this
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
346 buffer with the contents of a file
94546
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
347 \\[highlight-compare-buffers] highlights differences between two buffers."
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
348 nil ;; init-value
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
349 hilit-chg-string ;; lighter
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
350 nil ;; keymap
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
351 (if (or (display-color-p)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
352 (and (fboundp 'x-display-grayscale-p) (x-display-grayscale-p)))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
353 (progn
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
354 (if (and (eq this-command 'global-highlight-changes-mode)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
355 (not highlight-changes-global-changes-existing-buffers))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
356 ;; The global mode has toggled the value of the mode variable,
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
357 ;; but not other changes have been mode, so we are safe
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
358 ;; to retoggle it.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
359 (setq highlight-changes-mode (not highlight-changes-mode)))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
360 (if highlight-changes-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
361 ;; it is being turned on
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
362 (hilit-chg-set)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
363 ;; mode is turned off
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
364 (hilit-chg-clear)))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
365 (message "Highlight Changes mode requires color or grayscale display")))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
366
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
367
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
368 ;;;###autoload
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
369 (define-minor-mode highlight-changes-visible-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
370 "Toggle visiblility of changes when buffer is in Highlight Changes mode.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
371
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
372 This mode only has an effect when Highlight Changes mode is on.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
373 It allows toggling between whether or not the changed text is displayed
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
374 in a distinctive face.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
375
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
376 The default value can be customized with variable
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
377 `highlight-changes-visibility-initial-state'
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
378
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
379 This command does not itself set highlight-changes mode."
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
380
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
381 t ;; init-value
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
382 nil ;; lighter
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
383 nil ;; keymap
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
384
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
385 (hilit-chg-update)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
386 )
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
387
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
388
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (defun hilit-chg-cust-fix-changes-face-list (w wc &optional event)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 ;; When customization function `highlight-changes-face-list' inserts a new
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
391 ;; face it uses the default face. We don't want the user to modify this
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
392 ;; face, so we rename the faces in the list on an insert. The rename is
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 ;; actually done by copying the faces so user-defined faces still remain
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 ;; in the same order.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 ;; The notifying the parent is needed because without it changes to the
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 ;; faces are saved but not to the actual list itself.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (let ((old-list (widget-value w)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (if (member 'default old-list)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (let
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 ((p (reverse old-list))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (n (length old-list))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 new-name old-name
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (new-list nil)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (while p
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (setq old-name (car p))
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
407 (setq new-name (intern (format "highlight-changes-%d" n)))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (if (eq old-name new-name)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 nil
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;; A new face has been inserted: we don't want to modify the
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
411 ;; default face so copy it. Better, though, (I think) is to
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;; make a new face have the same attributes as
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
413 ;; the `highlight-changes' face.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (if (eq old-name 'default)
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
415 (copy-face 'highlight-changes new-name)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 (copy-face old-name new-name)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ))
68524
2f9b0e4b3a95 (highlight-changes-initial-state, highlight-changes-global-initial-state):
Juanma Barranquero <lekktu@gmail.com>
parents: 64895
diff changeset
418 (setq new-list (append (list new-name) new-list))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (setq n (1- n))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 (setq p (cdr p)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 (if (equal new-list (widget-value w))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 nil ;; (message "notify: no change!")
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (widget-value-set w new-list)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (widget-setup)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 ;; (message "notify: no default here!")
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 ))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 (let ((parent (widget-get w :parent)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 (when parent
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
431 (widget-apply parent :notify w event))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 (defcustom highlight-changes-face-list nil
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
435 "A list of faces used when rotating changes.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 Normally the variable is initialized to nil and the list is created from
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
437 `highlight-changes-colors' when needed. However, you can set this variable
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 to any list of faces. You will have to do this if you want faces which
63252
f4b47991b594 (highlight-changes-colours highlight-changes-face-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 63207
diff changeset
439 don't just differ from the `highlight-changes' face by the foreground color.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 Otherwise, this list will be constructed when needed from
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
441 `highlight-changes-colors'."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 :type '(choice
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
443 (repeat
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 :notify hilit-chg-cust-fix-changes-face-list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 face )
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
446 (const :tag "Derive from highlight-changes-colors" nil)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 )
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
448 :group 'highlight-changes)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
451 (defun hilit-chg-map-changes (func &optional start-position end-position)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
452 "Call function FUNC for each region used by Highlight Changes mode.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
453 If START-POSITION is nil, (point-min) is used.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
454 If END-POSITION is nil, (point-max) is used.
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
455 FUNC is called with 3 params: PROPERTY START STOP."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 (let ((start (or start-position (point-min)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (limit (or end-position (point-max)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 prop end)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 (while (and start (< start limit))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (setq prop (get-text-property start 'hilit-chg))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (setq end (text-property-not-all start limit 'hilit-chg prop))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (if prop
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 (funcall func prop start (or end limit)))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
464 (setq start end))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (defun hilit-chg-display-changes (&optional beg end)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 "Display face information for Highlight Changes mode.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
470 An overlay from BEG to END containing a change face is added from the
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
471 information in the text property of type `hilit-chg'.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
473 This is the opposite of `hilit-chg-hide-changes'."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 (hilit-chg-map-changes 'hilit-chg-make-ov beg end))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 (defun hilit-chg-make-ov (prop start end)
43030
90bce6424b8b (hilit-chg-fixup): Don't alter overlay if not ours.
Richard M. Stallman <rms@gnu.org>
parents: 41701
diff changeset
478 (or prop
90bce6424b8b (hilit-chg-fixup): Don't alter overlay if not ours.
Richard M. Stallman <rms@gnu.org>
parents: 41701
diff changeset
479 (error "hilit-chg-make-ov: prop is nil"))
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
480 ;; For the region create overlays with a distincive face
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
481 ;; and the text property 'hilit-chg.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 (let ((ov (make-overlay start end))
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
483 (face (if (eq prop 'hilit-chg-delete)
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
484 'highlight-changes-delete
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
485 (nth 1 (member prop hilit-chg-list)))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (if face
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (progn
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
488 ;; We must mark the face, that is the purpose of the overlay.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 (overlay-put ov 'face face)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 ;; I don't think we need to set evaporate since we should
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 ;; be controlling them!
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (overlay-put ov 'evaporate t)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 ;; We set the change property so we can tell this is one
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 ;; of our overlays (so we don't delete someone else's).
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (overlay-put ov 'hilit-chg t)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 )
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
497 (error "hilit-chg-make-ov: no face for prop: %s" prop))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (defun hilit-chg-hide-changes (&optional beg end)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 "Remove face information for Highlight Changes mode.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
502 The overlay containing the face is removed, but the text property
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 containing the change information is retained.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
505 This is the opposite of `hilit-chg-display-changes'."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (let ((start (or beg (point-min)))
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
507 (limit (or end (point-max))))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
508 (dolist (p (overlays-in start limit))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 ;; don't delete the overlay if it isn't ours!
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
510 (if (overlay-get p 'hilit-chg)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
511 (delete-overlay p)))))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
512
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (defun hilit-chg-fixup (beg end)
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
515 "Fix change overlays in region between BEG and END.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 Ensure the overlays agree with the changes as determined from
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
518 the text properties of type `hilit-chg'."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 ;; Remove or alter overlays in region beg..end
92149
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
520 (remove-overlays beg end 'hilit-chg t)
e8b93cb7392a Remove spurious * in defcustom docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 80118
diff changeset
521 (hilit-chg-display-changes beg end))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
523 ;; Inspired by font-lock. Something like this should be moved to subr.el.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
524 (defmacro highlight-save-buffer-state (&rest body)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
525 "Bind variables according to VARLIST and eval BODY restoring buffer state."
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
526 (declare (indent 0) (debug t))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
527 (let ((modified (make-symbol "modified")))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
528 `(let* ((,modified (buffer-modified-p))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
529 (inhibit-modification-hooks t)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
530 deactivate-mark
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
531 ;; So we don't check the file's mtime.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
532 buffer-file-name
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
533 buffer-file-truename)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
534 (progn
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
535 ,@body)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
536 (unless ,modified
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
537 (restore-buffer-modified-p nil)))))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
538
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 ;;;###autoload
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
540 (defun highlight-changes-remove-highlight (beg end)
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
541 "Remove the change face from the region between BEG and END.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 This allows you to manually remove highlighting from uninteresting changes."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (interactive "r")
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
544 (highlight-save-buffer-state
68738
974d9b214cd3 (hilit-chg-update-all-buffers): Use `mapc' instead of `mapcar'; return nil.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
545 (remove-text-properties beg end '(hilit-chg nil))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (hilit-chg-fixup beg end)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
548 (defun hilit-chg-set-face-on-change (beg end leng-before
43030
90bce6424b8b (hilit-chg-fixup): Don't alter overlay if not ours.
Richard M. Stallman <rms@gnu.org>
parents: 41701
diff changeset
549 &optional no-property-change)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 "Record changes and optionally display them in a distinctive face.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 `hilit-chg-set' adds this function to the `after-change-functions' hook."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 ;; This function is called by the `after-change-functions' hook, which
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 ;; is how we are notified when text is changed.
23289
8825530c80cd Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents: 23288
diff changeset
555 ;; It is also called from `highlight-compare-with-file'.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 ;; We do NOT want to simply do this if this is an undo command, because
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 ;; otherwise an undone change shows up as changed. While the properties
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
559 ;; are automatically restored by undo, we must fix up the overlay.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (save-match-data
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (let ((beg-decr 1) (end-incr 1)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (type 'hilit-chg)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 old)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (if undo-in-progress
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
565 (if (and highlight-changes-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
566 highlight-changes-visible-mode)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (hilit-chg-fixup beg end))
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
568 (highlight-save-buffer-state
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
569 (if (and (= beg end) (> leng-before 0))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
570 ;; deletion
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
571 (progn
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
572 ;; The eolp and bolp tests are a kludge! But they prevent
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
573 ;; rather nasty looking displays when deleting text at the end
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
574 ;; of line, such as normal corrections as one is typing and
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
575 ;; immediately makes a correction, and when deleting first
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
576 ;; character of a line.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
577 ;; (if (= leng-before 1)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
578 ;; (if (eolp)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
579 ;; (setq beg-decr 0 end-incr 0)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
580 ;; (if (bolp)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
581 ;; (setq beg-decr 0))))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
582 ;; (setq beg (max (- beg beg-decr) (point-min)))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
583 (setq end (min (+ end end-incr) (point-max)))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
584 (setq type 'hilit-chg-delete))
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
585 ;; Not a deletion.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
586 ;; Most of the time the following is not necessary, but
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
587 ;; if the current text was marked as a deletion then
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
588 ;; the old overlay is still in effect, so if we add some
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
589 ;; text then remove the deletion marking, but set it to
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 ;; changed otherwise its highlighting disappears.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (progn
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
594 (if highlight-changes-visible-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
595 (hilit-chg-fixup beg (+ end 1))))))
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
596 (unless no-property-change
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
597 (put-text-property beg end 'hilit-chg type))
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
598 (if (or highlight-changes-visible-mode no-property-change)
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
599 (hilit-chg-make-ov type beg end)))))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
601 (defun hilit-chg-update ()
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
602 "Update a buffer's highlight changes when visibility changed."
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
603 (if highlight-changes-visible-mode
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
604 ;; changes are visible
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
605 (progn
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
606 (setq hilit-chg-string highlight-changes-visible-string)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
607 (or buffer-read-only
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
608 (hilit-chg-display-changes)))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
609 ;; changes are invisible
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
610 (setq hilit-chg-string highlight-changes-invisible-string)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
611 (or buffer-read-only
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
612 (hilit-chg-hide-changes))))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
613
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
614 (defun hilit-chg-set ()
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 "Turn on Highlight Changes mode for this buffer."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (remove-hook 'after-change-functions 'hilit-chg-set-face-on-change t)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (hilit-chg-make-list)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
618 (setq highlight-changes-mode t)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
619 (setq highlight-changes-visible-mode highlight-changes-visibility-initial-state)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
620 (hilit-chg-update)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 (force-mode-line-update)
94546
11b8f709e661 (highlight-changes-mode): Removed references to hooks that no longer exist.
Juanma Barranquero <lekktu@gmail.com>
parents: 94159
diff changeset
622 (add-hook 'after-change-functions 'hilit-chg-set-face-on-change nil t))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defun hilit-chg-clear ()
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 "Remove Highlight Changes mode for this buffer.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 This removes all saved change information."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (if buffer-read-only
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 ;; We print the buffer name because this function could be called
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
629 ;; on many buffers from `global-highlight-changes-mode'.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (message "Cannot remove highlighting from read-only mode buffer %s"
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (buffer-name))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (remove-hook 'after-change-functions 'hilit-chg-set-face-on-change t)
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
633 (highlight-save-buffer-state
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (hilit-chg-hide-changes)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
635 (hilit-chg-map-changes
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
636 (lambda (prop start stop)
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
637 (remove-text-properties start stop '(hilit-chg nil)))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (setq highlight-changes-mode nil)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
639 (force-mode-line-update)))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 ;;;###autoload
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (defun highlight-changes-next-change ()
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 "Move to the beginning of the next change, if in Highlight Changes mode."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (interactive)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (if highlight-changes-mode
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (let ((start (point))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 prop)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (setq prop (get-text-property (point) 'hilit-chg))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (if prop
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 ;; we are in a change
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (setq start (next-single-property-change (point) 'hilit-chg)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (if start
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (setq start (next-single-property-change start 'hilit-chg)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (if start
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (goto-char start)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (message "no next change")))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (message "This buffer is not in Highlight Changes mode.")))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 ;;;###autoload
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (defun highlight-changes-previous-change ()
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 "Move to the beginning of the previous change, if in Highlight Changes mode."
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 (interactive)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (if highlight-changes-mode
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 (let ( (start (point)) (prop nil) )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (or (bobp)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (setq prop (get-text-property (1- (point)) 'hilit-chg)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (if prop
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 ;; we are in a change
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 (setq start (previous-single-property-change (point) 'hilit-chg)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (if start
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (setq start (previous-single-property-change start 'hilit-chg)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 ;; special handling for the case where (point-min) is a change
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (if start
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (setq start (or (previous-single-property-change start 'hilit-chg)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (if (get-text-property (point-min) 'hilit-chg)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (point-min)))))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (if start
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 (goto-char start)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (message "no previous change")))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (message "This buffer is not in Highlight Changes mode.")))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 ;; ========================================================================
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (defun hilit-chg-make-list (&optional force)
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
687 "Construct `hilit-chg-list' and `highlight-changes-face-list'."
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
688 ;; Constructs highlight-changes-face-list if necessary,
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 ;; and hilit-chg-list always:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 ;; Maybe this should always be called when rotating a face
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ;; so we pick up any changes?
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 (if (or (null highlight-changes-face-list) ; Don't do it if it
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 force) ; already exists unless FORCE non-nil.
63351
071d62682d14 (highlight-changes-colors): Rename from `highlight-changes-colours'.
Juanma Barranquero <lekktu@gmail.com>
parents: 63252
diff changeset
694 (let ((p highlight-changes-colors)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 (n 1) name)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (setq highlight-changes-face-list nil)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (while p
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
698 (setq name (intern (format "highlight-changes-%d" n)))
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
699 (copy-face 'highlight-changes name)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (set-face-foreground name (car p))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
701 (setq highlight-changes-face-list
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (append highlight-changes-face-list (list name)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 (setq p (cdr p))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (setq n (1+ n)))))
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
705 (setq hilit-chg-list (list 'hilit-chg 'highlight-changes))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 (let ((p highlight-changes-face-list)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
707 (n 1)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 last-category last-face)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (while p
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (setq last-category (intern (format "change-%d" n)))
63207
fecefbfcd215 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Miles Bader <miles@gnu.org>
parents: 61394
diff changeset
711 ;; (setq last-face (intern (format "highlight-changes-%d" n)))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 (setq last-face (car p))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 (setq hilit-chg-list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 (append hilit-chg-list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 (list last-category last-face)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 (setq p (cdr p))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 (setq n (1+ n)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (setq hilit-chg-list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (append hilit-chg-list
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
720 (list last-category last-face)))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (defun hilit-chg-bump-change (prop start end)
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
723 "Increment (age) the Highlight Changes mode text property."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 (let ( new-prop )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 (if (eq prop 'hilit-chg-delete)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (setq new-prop (nth 2 hilit-chg-list))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
727 (setq new-prop (nth 2 (member prop hilit-chg-list))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 (if prop
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (put-text-property start end 'hilit-chg new-prop)
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
730 (message "%d-%d unknown property %s not changed" start end prop))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 ;;;###autoload
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (defun highlight-changes-rotate-faces ()
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
734 "Rotate the faces if in Highlight Changes mode and the changes are visible.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
736 Current changes are displayed in the face described by the first element
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
737 of `highlight-changes-face-list', one level older changes are shown in
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 face described by the second element, and so on. Very old changes remain
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 shown in the last face in the list.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
741 You can automatically rotate colors when the buffer is saved by adding
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
742 this function to `write-file-functions' as a buffer-local value. To do
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
743 this, eval the following in the buffer to be saved:
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
744
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
745 \(add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)"
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (interactive)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
747 (when (and highlight-changes-mode highlight-changes-visible-mode)
77896
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
748 (let ((modified (buffer-modified-p))
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
749 (inhibit-modification-hooks t))
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
750 ;; The `modified' related code tries to combine two goals: (1) Record the
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
751 ;; rotation in `buffer-undo-list' and (2) avoid setting the modified flag
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
752 ;; of the current buffer due to the rotation. We do this by inserting (in
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
753 ;; `buffer-undo-list') entries restoring buffer-modified-p to nil before
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
754 ;; and after the entry for the rotation.
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
755 ;; FIXME: this is no good: we need to test the `modified' state at the
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
756 ;; time of the undo, not at the time of the "do", otherwise the undo
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
757 ;; may erroneously clear the modified flag. --Stef
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
758 ;; (unless modified
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
759 ;; ;; Install the "before" entry.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
760 ;; (push '(apply restore-buffer-modified-p nil) buffer-undo-list))
77896
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
761 (unwind-protect
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
762 (progn
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
763 ;; ensure hilit-chg-list is made and up to date
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
764 (hilit-chg-make-list)
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
765 ;; remove our existing overlays
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
766 (hilit-chg-hide-changes)
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
767 ;; for each change text property, increment it
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
768 (hilit-chg-map-changes 'hilit-chg-bump-change)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
769 ;; and display them
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
770 (hilit-chg-display-changes))
77896
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
771 (unless modified
80118
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
772 ;; Install the "after" entry. FIXME: See above.
cb439b5418e5 (highlight-save-buffer-state): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
773 ;; (push '(apply restore-buffer-modified-p nil) buffer-undo-list)
77896
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
774
c11694f17ad9 (highlight-changes-rotate-faces): Don't set modified flag of buffer.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
775 (restore-buffer-modified-p nil)))))
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
776 ;; This always returns nil so it is safe to use in write-file-functions
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 nil)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 ;; ========================================================================
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
780 ;; Comparing buffers/files
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
781 ;; These use ediff to find the differences.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
782
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
783 (defun highlight-markup-buffers
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
784 (buf-a file-a buf-b file-b &optional markup-a-only)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
785 "Get differences between two buffers and set highlight changes.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
786 Both buffers are done unless optional parameter MARKUP-A-ONLY
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
787 is non-nil."
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
788 (eval-and-compile
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
789 (require 'ediff-util))
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
790 (save-window-excursion
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
791 (let* (change-info
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
792 change-a change-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
793 a-start a-end len-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
794 b-start b-end len-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
795 (bufa-modified (buffer-modified-p buf-a))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
796 (bufb-modified (buffer-modified-p buf-b))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
797 (buf-a-read-only (with-current-buffer buf-a buffer-read-only))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
798 (buf-b-read-only (with-current-buffer buf-b buffer-read-only))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
799 temp-a temp-b)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
800 (if (and file-a bufa-modified)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
801 (if (y-or-n-p (format "Save buffer %s? " buf-a))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
802 (with-current-buffer buf-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
803 (save-buffer)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
804 (setq bufa-modified (buffer-modified-p buf-a)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
805 (setq file-a nil)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
806 (or file-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
807 (setq temp-a (setq file-a (ediff-make-temp-file buf-a nil))))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
808
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
809 (if (and file-b bufb-modified)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
810 (if (y-or-n-p (format "Save buffer %s? " buf-b))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
811 (with-current-buffer buf-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
812 (save-buffer)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
813 (setq bufb-modified (buffer-modified-p buf-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
814 (setq file-b nil)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
815 (or file-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
816 (setq temp-b (setq file-b (ediff-make-temp-file buf-b nil))))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
817 (set-buffer buf-a)
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
818 (highlight-changes-mode 1)
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
819 (or markup-a-only (with-current-buffer buf-b
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
820 (highlight-changes-mode 1)))
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
821 (setq change-info (hilit-chg-get-diff-info buf-a file-a buf-b file-b))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
822
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
823
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
824 (setq change-a (car change-info))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
825 (setq change-b (car (cdr change-info)))
63252
f4b47991b594 (highlight-changes-colours highlight-changes-face-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 63207
diff changeset
826
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
827 (hilit-chg-make-list)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
828 (while change-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
829 (setq a-start (nth 0 (car change-a)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
830 (setq a-end (nth 1 (car change-a)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
831 (setq b-start (nth 0 (car change-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
832 (setq b-end (nth 1 (car change-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
833 (setq len-a (- a-end a-start))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
834 (setq len-b (- b-end b-start))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
835 (set-buffer buf-a)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
836 (hilit-chg-set-face-on-change a-start a-end len-b buf-a-read-only)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
837 (or markup-a-only
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
838 (with-current-buffer buf-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
839 (hilit-chg-set-face-on-change b-start b-end len-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
840 buf-b-read-only)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
841 ))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
842 (setq change-a (cdr change-a))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
843 (setq change-b (cdr change-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
844 (or bufa-modified
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
845 (with-current-buffer buf-a (set-buffer-modified-p nil)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
846 (or bufb-modified
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
847 (with-current-buffer buf-b (set-buffer-modified-p nil)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
848 (if temp-a
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
849 (delete-file temp-a))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
850 (if temp-b
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
851 (delete-file temp-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
852 ))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
853
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
854 ;;;###autoload
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
855 (defun highlight-compare-buffers (buf-a buf-b)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
856 "Compare two buffers and highlight the differences.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
857
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
858 The default is the current buffer and the one in the next window.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
859
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
860 If either buffer is modified and is visiting a file, you are prompted
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
861 to save the file.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
862
64587
e35a761796a9 (highlight-changes-global-initial-state, highlight-compare-buffers,
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
863 Unless the buffer is unmodified and visiting a file, the buffer is
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
864 written to a temporary file for comparison.
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
865
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
866 If a buffer is read-only, differences will be highlighted but no property
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
867 changes are made, so \\[highlight-changes-next-change] and
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
868 \\[highlight-changes-previous-change] will not work."
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
869 (interactive
63252
f4b47991b594 (highlight-changes-colours highlight-changes-face-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 63207
diff changeset
870 (list
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
871 (get-buffer (read-buffer "buffer-a " (current-buffer) t))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
872 (get-buffer
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
873 (read-buffer "buffer-b "
63252
f4b47991b594 (highlight-changes-colours highlight-changes-face-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 63207
diff changeset
874 (window-buffer (next-window (selected-window))) t))))
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
875 (let ((file-a (buffer-file-name buf-a))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
876 (file-b (buffer-file-name buf-b)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
877 (highlight-markup-buffers buf-a file-a buf-b file-b)
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
878 ))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 ;;;###autoload
23288
17dd9ecf84f1 (highlight-compare-with-file): Renamed from
Karl Heuer <kwzh@gnu.org>
parents: 23101
diff changeset
881 (defun highlight-compare-with-file (file-b)
17dd9ecf84f1 (highlight-compare-with-file): Renamed from
Karl Heuer <kwzh@gnu.org>
parents: 23101
diff changeset
882 "Compare this buffer with a file, and highlight differences.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
884 If the buffer has a backup filename, it is used as the default when
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
885 this function is called interactively.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
887 If the current buffer is visiting the file being compared against, it
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
888 also will have its differences highlighted. Otherwise, the file is
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
889 read in temporarily but the buffer is deleted.
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
891 If the buffer is read-only, differences will be highlighted but no property
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
892 changes are made, so \\[highlight-changes-next-change] and
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 \\[highlight-changes-previous-change] will not work."
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
894 (interactive
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
895 (let ((file buffer-file-name)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
896 (file-name nil)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
897 (file-dir nil))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
898 (and file
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
899 (setq file-name (file-name-nondirectory file)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
900 file-dir (file-name-directory file)))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
901 (setq file-name (make-backup-file-name file-name))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
902 (unless (file-exists-p file-name)
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
903 (setq file-name nil))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
904 (list (read-file-name
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
905 "Find to compare with: " ;; prompt
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
906 file-dir ;; directory
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
907 nil ;; default
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
908 nil ;; existing
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
909 file-name) ;; initial
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
910 )))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (let* ((buf-a (current-buffer))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (file-a (buffer-file-name))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (existing-buf (get-file-buffer file-b))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (buf-b (or existing-buf
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (find-file-noselect file-b)))
54009
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
916 (buf-b-read-only (with-current-buffer buf-b buffer-read-only)))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
917 (highlight-markup-buffers buf-a file-a buf-b file-b (not existing-buf))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
918 (unless existing-buf
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
919 (kill-buffer buf-b))
303333d2f1f3 Use require instead of eval-and-compile.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
920 ))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (defun hilit-chg-get-diff-info (buf-a file-a buf-b file-b)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (let ((e nil) x y) ;; e is set by function hilit-chg-get-diff-list-hk
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (ediff-setup buf-a file-a buf-b file-b
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 nil nil ; buf-c file-C
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 'hilit-chg-get-diff-list-hk
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (list (cons 'ediff-job-name 'something))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (ediff-with-current-buffer e (ediff-really-quit nil))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (list x y)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (defun hilit-chg-get-diff-list-hk ()
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
935 ;; x and y are dynamically bound by hilit-chg-get-diff-info
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 ;; which calls this function as a hook
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 (defvar x) ;; placate the byte-compiler
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 (defvar y)
68738
974d9b214cd3 (hilit-chg-update-all-buffers): Use `mapc' instead of `mapcar'; return nil.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
939 (setq e (current-buffer))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 (let ((n 0) extent p va vb a b)
68738
974d9b214cd3 (hilit-chg-update-all-buffers): Use `mapc' instead of `mapcar'; return nil.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
941 (setq x nil y nil) ;; x and y are bound by hilit-chg-get-diff-info
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 (while (< n ediff-number-of-differences)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (ediff-make-fine-diffs n)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (setq va (ediff-get-fine-diff-vector n 'A))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 ;; va is a vector if there are fine differences
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (if va
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (setq a (append va nil))
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
948 ;; if not, get the unrefined difference
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 (setq va (ediff-get-difference n 'A))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
950 (setq a (list (elt va 0))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 ;; a list a list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (setq p a)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 (while p
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 (setq extent (list (overlay-start (car p))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (overlay-end (car p))))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (setq p (cdr p))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
957 (setq x (append x (list extent) )));; while p
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (setq vb (ediff-get-fine-diff-vector n 'B))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 ;; vb is a vector
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (if vb
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 (setq b (append vb nil))
47259
08b8c2bc2e81 (highlight-changes-colours, highlight-changes-active-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 44740
diff changeset
963 ;; if not, get the unrefined difference
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (setq vb (ediff-get-difference n 'B))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
965 (setq b (list (elt vb 0))))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 ;; b list a list
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (setq p b)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (while p
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (setq extent (list (overlay-start (car p))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (overlay-end (car p))))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (setq p (cdr p))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
972 (setq y (append y (list extent) )))
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
973 (setq n (1+ n)));; while
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 ;; ediff-quit doesn't work here.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 ;; No point in returning a value, since this is a hook function.
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 ))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
978 ;; ======================= global-highlight-changes-mode ==============
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 ;;;###autoload
93626
49c6cb8751f6 (global-highlight-changes-mode, highlight-changes-passive-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 93624
diff changeset
981 (define-globalized-minor-mode global-highlight-changes-mode
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
982 highlight-changes-mode highlight-changes-mode-turn-on)
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
984 (define-obsolete-function-alias
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
985 'global-highlight-changes
93626
49c6cb8751f6 (global-highlight-changes-mode, highlight-changes-passive-string,
Juanma Barranquero <lekktu@gmail.com>
parents: 93624
diff changeset
986 'global-highlight-changes-mode "23.1")
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
988 (defun highlight-changes-mode-turn-on ()
93624
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
989 "See if Highlight Changes mode should be turned on for this buffer.
cb11f55e7732 (highlight-changes-visibility-initial-state, hilit-chg-update,
Juanma Barranquero <lekktu@gmail.com>
parents: 93620
diff changeset
990 This is called when `global-highlight-changes-mode' is turned on."
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (or highlight-changes-mode ; do nothing if already on
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (if
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (cond
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 ((null highlight-changes-global-modes)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 nil)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 ((functionp highlight-changes-global-modes)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (funcall highlight-changes-global-modes))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 ((listp highlight-changes-global-modes)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (if (eq (car-safe highlight-changes-global-modes) 'not)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (not (memq major-mode (cdr highlight-changes-global-modes)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (memq major-mode highlight-changes-global-modes)))
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (t
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
1003 (and
68738
974d9b214cd3 (hilit-chg-update-all-buffers): Use `mapc' instead of `mapcar'; return nil.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
1004 (not (string-match "^[ *]" (buffer-name)))
30962
b309b17a6025 General cleanup of doc strings, comments and
Gerd Moellmann <gerd@gnu.org>
parents: 30924
diff changeset
1005 (buffer-file-name))))
93620
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
1006 (highlight-changes-mode 1))
dfdeba5ae4fd (highlight-changes-mode): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92149
diff changeset
1007 ))
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009
64895
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1010 ;;;; Desktop support.
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1011
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1012 ;; Called by `desktop-create-buffer' to restore `highlight-changes-mode'.
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1013 (defun hilit-chg-desktop-restore (desktop-buffer-locals)
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1014 (highlight-changes-mode
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1015 (or (cdr (assq 'highlight-changes-mode desktop-buffer-locals)) 1)))
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1016
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1017 (add-to-list 'desktop-minor-mode-handlers
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1018 '(highlight-changes-mode . hilit-chg-desktop-restore))
bde8cc177550 Add handler to desktop-minor-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64762
diff changeset
1019
68752
e065294f485f Add highlight-changes-mode to desktop-locals-to-save.
Lars Hansen <larsh@soem.dk>
parents: 68738
diff changeset
1020 (add-to-list 'desktop-locals-to-save 'highlight-changes-mode)
e065294f485f Add highlight-changes-mode to desktop-locals-to-save.
Lars Hansen <larsh@soem.dk>
parents: 68738
diff changeset
1021
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 ;; ===================== debug ==================
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 ;; For debug & test use:
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 ;;
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 ;; (defun hilit-chg-debug-show (&optional beg end)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 ;; (interactive)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 ;; (message "--- hilit-chg-debug-show ---")
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 ;; (hilit-chg-map-changes '(lambda (prop start end)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 ;; (message "%d-%d: %s" start end prop)
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 ;; )
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 ;; beg end
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 ;; ))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47259
diff changeset
1033 ;;
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 ;; ================== end of debug ===============
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 (provide 'hilit-chg)
22958
cd50dfa70bb2 Delete the undo-in-progress compatibility code.
Richard M. Stallman <rms@gnu.org>
parents: 22957
diff changeset
1037
59601
73b89f6377fc (highlight-changes-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54009
diff changeset
1038 ;; arch-tag: de00301d-5bad-44da-aa82-e0e010b0c463
22957
dd92cb09f5d1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 ;;; hilit-chg.el ends here