Mercurial > emacs
annotate lisp/compare-w.el @ 99501:e3acb52d33e1
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-yank): Make any prefix force normal yanking.
Suppress folding if text would be swallowed into a folded
subtree.
(org-yank-folded-subtrees, org-yank): Docstring updates.
* org-agenda.el (org-agenda-compare-effort): Treat no effort
defined as 0.
* org-exp.el (org-export-language-setup): Add Catalan and
Esperanto language entries.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-refile): Allow refiling of entire regions.
* org-clock.el (org-clock-time%): New function.
* org.el (org-entry-get, org-entry-delete): Use safer regexps to
retrieve property values.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-list): Handle the value `only' of
org-agenda-show-log'.
(org-agenda-log-mode): Interpret a double prefix arg.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-html-footnotes-section): New variable.
(org-export-as-html): Use `org-export-html-footnotes-section' to
insert the footnotes.
(org-export-language-setup): Add "Footnotes" to language words.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-yank): Fix bug when not inserting a subtree.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org-vm.el (org-vm-follow-link): Call `vm-preview-current-message'
instead of `vm-beginning-of-message'.
* org.el (org-make-link-regexps): Make sure that links to gnus can
contain brackets.
2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
* org-attach.el (org-attach-dir): Remove duplicate ID creation
code.
* org-id.el (org-id-new): Use `org-trim' to extract the uuid from
shell output.
* org.el (org-link-abbrev-alist): Improve customization type.
* org-attach.el (org-attach-expand-link, org-attach-expand): New
functions.
* org-agenda.el (org-agenda-get-progress): Renamed from
`org-get-closed'. Implement searching for state changes as well.
(org-agenda-log-mode-items): New option.
(org-agenda-log-mode): New option prefix argument, interpreted as
request to show all possible progress info.
(org-agenda-get-day-entries): Call `org-get-progress' instead of
`org-get-closed'.
(org-agenda-set-mode-name): Handle the more complex log mode
settings.
(org-get-closed): New alias, pointing to `org-get-progress'.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-file-apps-defaults-gnu)
(org-file-apps-defaults-macosx)
(org-file-apps-defaults-windowsnt): Add an entry defining the
system command.
(org-file-apps): Allow `system' as key and value.
(org-open-at-point): Explain the effect of a double prefix arg.
(org-open-file): If the argument `in-emacs' is (16),
i.e. corresponding to a double prefix argument, try to open the
file externally.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-insert-link): Abbreviate absolute files names in
links. Also, fix a bug in which the double C-u prefix would not
be honored.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-insert-heading): If buffer does not end with a
newline, add one if necessary to insert headline correctly.
* org-exp.el (org-export-as-html): Make sure that <hr/> is between
paragraphs, not inside.
* org.el (org-todo): Quote
`org-agenda-headline-snapshot-before-repeat'.
* org-exp.el (org-export-as-html): Fully process link descriptions.
(org-export-html-format-desc): New function.
(org-export-as-html): Collect footnotes into the correct basket.
(org-html-protect): No longer protect quotations marks here, this
goes wrong.
* org-agenda.el (org-agenda-remove-marked-text): Bind variable
BEG.
* org-compat.el (org-fit-window-to-buffer): New function (not
really, a preliminary and incomplete version was present earlier,
but not used).
* org.el (org-fast-todo-selection, org-fast-tag-selection): Use
`org-fit-window-to-buffer'.
* org-exp.el (org-export): Use `org-fit-window-to-buffer'.
* org-agenda.el (org-agenda-get-restriction-and-command)
(org-fit-agenda-window, org-agenda-convert-date): Use
`org-fit-window-to-buffer'.
* org-exp.el (org-export-as-html): Process href links through
`org-export-html-format-href'.
(org-export-html-format-href): New function.
* org-agenda.el (org-agenda-todo): Update only the current
headline if this is a repeated TODO, marked done for today.
(org-agenda-change-all-lines): New argument JUST-THIS, to change
only the current line.
* org.el (org-todo): Take a snapshot of the headline if the
repeater might change it.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org-publish.el (org-publish-find-title): Remove buffers visited
only for extracting the title.
* org-exp.el (org-export-html-style)
(org-export-html-style-default): Mark style definitions as
unparsed CDATA.
* org-publish.el (org-publish-validate-link): Function
re-introduced.
2008-11-12 Charles Sebold <csebold@gmail.com>
* org-plot.el (org-plot/add-options-to-plist): Supports timefmt
property.
(org-plot-quote-timestamp-field): New function.
(org-plot-quote-tsv-field): Call timestamp field function when
necessary rather than just quoting as a string.
(org-plot/gnuplot-to-data): Pass in timefmt property.
(org-plot/gnuplot-script): Supports timefmt property.
(org-plot/gnuplot): Checks for timestamp column before checking
for text index column.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-insert-heading): Improve behavior with hidden subtrees.
* org-publish.el (org-publish-org-index): Create a section in the
index file.
(org-publish-org-index): Stop linking to directories.
* org.el (org-emphasis-alist): Use span instead of <u> to
underline text.
* org-exp.el (org-export-as-html): Make sure <p> is closed before
<pre> sections.
2008-11-12 Sebastian Rose <sebastian_rose@gmx.de>
* org-jsinfo.el (org-infojs-template): Remove language attribute
from script tag.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org-agenda.el (org-agenda-remove-marked-text): New function.
(org-agenda-mark-filtered-text)
(org-agenda-unmark-filtered-text): New functions.
(org-write-agenda): Remove fltered text.
* org.el (org-make-tags-matcher): Give access to TODO "property"
without speed penalty.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-link-frame-setup): Add `org-gnus-no-new-news' as an
option.
(org-store-link-props): Make sure adding to the plist works
correctly.
* org-gnus.el (org-gnus-no-new-news): New function.
(org-gnus-follow-link): Allow the article ID to be a message-id,
in addition to allowing article numbers. Message IDs make much
more roubust links.
(org-gnus-store-link): Use message-id to create link.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-emphasize): Reverse the selection array.
(org-emphasis-alist): Set <code> tags for the verbatim
environment.
* org-remember.el (org-remember-handler): Fix bug with
prefix-related changing of the note storage target.
* org-exp.el (org-print-icalendar-entries): Make the exported
priorities compatible with RFC 2445.
* org-clock.el (org-clock-save): Insert time stamp without
dependence on time-stamp.el.
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org.el ("saveplace"): If saveplace puts point into an invisible
location, make it visible.
(org-make-tags-matcher): Allow inactive time stamps in time
comparisons.
(org-yank-adjusted-subtrees): New option.
(org-yank): Incorporate adjusting trees.
(org-paste-subtree): New argument FOR-YANK which will cause
insertion at point without backing up over white lines, and leave
point at the end of the inserted text. Also if the cursor is
at the beginning of a headline, use the same level or the inserted
tree.
* org-publish.el (org-publish-get-base-files-1): Deal correctly
with broken symlinks
2008-11-12 Carsten Dominik <dominik@science.uva.nl>
* org-exp.el (org-export-select-tags, org-get-current-options):
Fix typo.
author | Carsten Dominik <dominik@science.uva.nl> |
---|---|
date | Wed, 12 Nov 2008 08:01:06 +0000 |
parents | ee5932bf781d |
children | d42aff5ca541 |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
24948
diff
changeset
|
1 ;;; compare-w.el --- compare text between windows for Emacs |
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
2 |
74439 | 3 ;; Copyright (C) 1986, 1989, 1993, 1997, 2001, 2002, 2003, 2004, |
79721 | 4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
845 | 5 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
6 ;; Maintainer: FSF |
45078 | 7 ;; Keywords: convenience files |
257 | 8 |
9 ;; This file is part of GNU Emacs. | |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
257 | 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:
93975
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:
93975
diff
changeset
|
14 ;; (at your option) any later version. |
257 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
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:
93975
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
257 | 23 |
2307
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
24 ;;; Commentary: |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
25 |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
26 ;; This package provides one entry point, compare-windows. It compares |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
27 ;; text starting from point in two adjacent windows, advancing point |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
28 ;; until it finds a difference. Option variables permit you to ignore |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
29 ;; whitespace differences, or case differences, or both. |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2011
diff
changeset
|
30 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
31 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
32 |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
33 (defgroup compare-windows nil |
21088 | 34 "Compare text between windows." |
35 :prefix "compare-" | |
36 :group 'tools) | |
37 | |
46405
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
38 (defcustom compare-windows-whitespace "\\(\\s-\\|\n\\)+" |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
39 "*Regexp or function that defines whitespace sequences for `compare-windows'. |
46405
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
40 That command optionally ignores changes in whitespace. |
257 | 41 |
46405
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
42 The value of `compare-windows-whitespace' is normally a regexp, but it |
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
43 can also be a function. The function's job is to categorize any |
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
44 whitespace around (including before) point; it should also advance |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
45 past any whitespace. The function is called in each window, with |
46405
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
46 point at the current scanning point. It gets one argument, the point |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
47 where \\[compare-windows] was originally called; it should not look at |
46405
2bde7081136b
(compare-windows-whitespace): Always allow newline
Richard M. Stallman <rms@gnu.org>
parents:
45078
diff
changeset
|
48 any text before that point. |
257 | 49 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
50 If the function returns the same value for both windows, then the |
21088 | 51 whitespace is considered to match, and is skipped." |
52 :type '(choice regexp function) | |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
53 :group 'compare-windows) |
257 | 54 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
55 (defcustom compare-ignore-whitespace nil |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
56 "*Non-nil means `compare-windows' ignores whitespace." |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
57 :type 'boolean |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
58 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
59 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
60 |
21088 | 61 (defcustom compare-ignore-case nil |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
62 "*Non-nil means `compare-windows' ignores case differences." |
21088 | 63 :type 'boolean |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
64 :group 'compare-windows) |
257 | 65 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
66 (defcustom compare-windows-sync 'compare-windows-sync-default-function |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
67 "*Function or regexp that is used to synchronize points in two |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
68 windows if before calling `compare-windows' points are located |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
69 on mismatched positions. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
70 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
71 The value of `compare-windows-sync' can be a function. The |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
72 function's job is to advance points in both windows to the next |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
73 matching text. If the value of `compare-windows-sync' is a |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
74 regexp, then points in both windows are advanced to the next |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
75 occurrence of this regexp. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
76 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
77 The current default value is the general function |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
78 `compare-windows-sync-default-function' that is able to |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
79 synchronize points by using quadratic algorithm to find the first |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
80 matching 32-character string in two windows. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
81 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
82 The other useful values of this variable could be such functions |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
83 as `forward-word', `forward-sentence', `forward-paragraph', or a |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
84 regexp containing some field separator or a newline, depending on |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
85 the nature of the difference units separator. The variable can |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
86 be made buffer-local. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
87 |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
88 If the value of this variable is `nil' (option \"No sync\"), then |
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
89 no synchronization is performed, and the function `ding' is called |
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
90 to beep or flash the screen when points are mismatched." |
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
91 :type '(choice function regexp (const :tag "No sync" nil)) |
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
92 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
93 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
94 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
95 (defcustom compare-windows-sync-string-size 32 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
96 "*Size of string from one window that is searched in second window. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
97 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
98 Small number makes difference regions more fine-grained, but it |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
99 may fail by finding the wrong match. The bigger number makes |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
100 difference regions more coarse-grained. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
101 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
102 The default value 32 is good for the most cases." |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
103 :type 'integer |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
104 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
105 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
106 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
107 (defcustom compare-windows-recenter nil |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
108 "*List of two values, each of which is used as argument of |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
109 function `recenter' called in each of two windows to place |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
110 matching points side-by-side. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
111 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
112 The value `(-1 0)' is useful if windows are split vertically, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
113 and the value `((4) (4))' for horizontally split windows." |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
114 :type '(list sexp sexp) |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
115 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
116 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
117 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
118 (defcustom compare-windows-highlight t |
69127
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
119 "*Non-nil means compare-windows highlights the differences. |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
120 The value t removes highlighting immediately after invoking a command |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
121 other than `compare-windows'. |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
122 The value `persistent' leaves all highlighted differences. You can clear |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
123 out all highlighting later with the command `compare-windows-dehighlight'." |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
124 :type '(choice (const :tag "No highlighting" nil) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
125 (const :tag "Persistent highlighting" persistent) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
126 (other :tag "Highlight until next command" t)) |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
127 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
128 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
129 |
63220
b14224937156
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384
Miles Bader <miles@gnu.org>
parents:
58601
diff
changeset
|
130 (defface compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
131 '((t :inherit lazy-highlight)) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
132 "Face for highlighting of compare-windows difference regions." |
76719
7d51f6ae5d8a
(compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents:
75347
diff
changeset
|
133 :group 'compare-windows |
64492
3fee42bf372b
(compare-ignore-whitespace, compare-windows-sync)
Juri Linkov <juri@jurta.org>
parents:
64091
diff
changeset
|
134 :version "22.1") |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
135 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
136 (defvar compare-windows-overlay1 nil) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
137 (defvar compare-windows-overlay2 nil) |
69127
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
138 (defvar compare-windows-overlays1 nil) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
139 (defvar compare-windows-overlays2 nil) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
140 (defvar compare-windows-sync-point nil) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
141 |
257 | 142 ;;;###autoload |
143 (defun compare-windows (ignore-whitespace) | |
144 "Compare text in current window with text in next window. | |
145 Compares the text starting at point in each window, | |
146 moving over text in each one as far as they match. | |
147 | |
10031
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
148 This command pushes the mark in each window |
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
149 at the prior location of point in that window. |
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
150 If both windows display the same buffer, |
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
151 the mark is pushed twice in that buffer: |
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
152 first in the other window, then in the selected window. |
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
153 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
154 A prefix arg means reverse the value of variable |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
155 `compare-ignore-whitespace'. If `compare-ignore-whitespace' is |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
156 nil, then a prefix arg means ignore changes in whitespace. If |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
157 `compare-ignore-whitespace' is non-nil, then a prefix arg means |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
158 don't ignore changes in whitespace. The variable |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
159 `compare-windows-whitespace' controls how whitespace is skipped. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
160 If `compare-ignore-case' is non-nil, changes in case are also |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
161 ignored. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
162 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
163 If `compare-windows-sync' is non-nil, then successive calls of |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
164 this command work in interlaced mode: |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
165 on first call it advances points to the next difference, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
166 on second call it synchronizes points by skipping the difference, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
167 on third call it again advances points to the next difference and so on." |
257 | 168 (interactive "P") |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
169 (if compare-ignore-whitespace |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
170 (setq ignore-whitespace (not ignore-whitespace))) |
257 | 171 (let* (p1 p2 maxp1 maxp2 b1 b2 w2 |
16986
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
172 (progress 1) |
257 | 173 (opoint1 (point)) |
174 opoint2 | |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
175 skip-func-1 |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
176 skip-func-2 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
177 (sync-func (if (stringp compare-windows-sync) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
178 'compare-windows-sync-regexp |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
179 compare-windows-sync))) |
257 | 180 (setq p1 (point) b1 (current-buffer)) |
24948
970c0b904d35
(compare-windows): Try to find the next window in
Andreas Schwab <schwab@suse.de>
parents:
21088
diff
changeset
|
181 (setq w2 (next-window (selected-window))) |
970c0b904d35
(compare-windows): Try to find the next window in
Andreas Schwab <schwab@suse.de>
parents:
21088
diff
changeset
|
182 (if (eq w2 (selected-window)) |
970c0b904d35
(compare-windows): Try to find the next window in
Andreas Schwab <schwab@suse.de>
parents:
21088
diff
changeset
|
183 (setq w2 (next-window (selected-window) nil 'visible))) |
257 | 184 (if (eq w2 (selected-window)) |
185 (error "No other window")) | |
186 (setq p2 (window-point w2) | |
187 b2 (window-buffer w2)) | |
188 (setq opoint2 p2) | |
189 (setq maxp1 (point-max)) | |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
190 |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
191 (setq skip-func-1 (if ignore-whitespace |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
192 (if (stringp compare-windows-whitespace) |
72432
ceec9309d859
(compare-windows): lambda's take an arg and pass
Richard M. Stallman <rms@gnu.org>
parents:
72408
diff
changeset
|
193 (lambda (pos) |
ceec9309d859
(compare-windows): lambda's take an arg and pass
Richard M. Stallman <rms@gnu.org>
parents:
72408
diff
changeset
|
194 (compare-windows-skip-whitespace pos) |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
195 t) |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
196 compare-windows-whitespace))) |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
197 |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
198 (with-current-buffer b2 |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
199 (setq skip-func-2 (if ignore-whitespace |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
200 (if (stringp compare-windows-whitespace) |
72432
ceec9309d859
(compare-windows): lambda's take an arg and pass
Richard M. Stallman <rms@gnu.org>
parents:
72408
diff
changeset
|
201 (lambda (pos) |
ceec9309d859
(compare-windows): lambda's take an arg and pass
Richard M. Stallman <rms@gnu.org>
parents:
72408
diff
changeset
|
202 (compare-windows-skip-whitespace pos) |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
203 t) |
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
204 compare-windows-whitespace))) |
10031
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
205 (push-mark p2 t) |
257 | 206 (setq maxp2 (point-max))) |
10031
324e027f01bc
(compare-windows): Push mark in both buffers at start.
Richard M. Stallman <rms@gnu.org>
parents:
7701
diff
changeset
|
207 (push-mark) |
257 | 208 |
16986
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
209 (while (> progress 0) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
210 ;; If both windows have whitespace next to point, |
257 | 211 ;; optionally skip over it. |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
212 (and skip-func-1 |
257 | 213 (save-excursion |
214 (let (p1a p2a w1 w2 result1 result2) | |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
215 (setq result1 (funcall skip-func-1 opoint1)) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
216 (setq p1a (point)) |
257 | 217 (set-buffer b2) |
218 (goto-char p2) | |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
219 (setq result2 (funcall skip-func-2 opoint2)) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
220 (setq p2a (point)) |
72408
7b77bbd3e40c
(compare-windows): Factor compare-ignore-whitespace into ignore-whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
69127
diff
changeset
|
221 (if (and result1 result2 (eq result1 result2)) |
7701
ec15948b9458
(compare-windows): Make leading whitespace equivalent
Richard M. Stallman <rms@gnu.org>
parents:
5005
diff
changeset
|
222 (setq p1 p1a |
ec15948b9458
(compare-windows): Make leading whitespace equivalent
Richard M. Stallman <rms@gnu.org>
parents:
5005
diff
changeset
|
223 p2 p2a))))) |
257 | 224 |
16986
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
225 (let ((size (min (- maxp1 p1) (- maxp2 p2))) |
2011
eea183a35396
(compare-windows): Use compare-buffer-substrings.
Richard M. Stallman <rms@gnu.org>
parents:
845
diff
changeset
|
226 (case-fold-search compare-ignore-case)) |
16986
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
227 (setq progress (compare-buffer-substrings b2 p2 (+ size p2) |
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
228 b1 p1 (+ size p1))) |
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
229 (setq progress (if (zerop progress) size (1- (abs progress)))) |
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
230 (setq p1 (+ p1 progress) p2 (+ p2 progress))) |
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
231 ;; Advance point now rather than later, in case we're interrupted. |
dc0cd1c70c87
(compare-windows): Make more efficient use of
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
232 (goto-char p1) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
233 (set-window-point w2 p2) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
234 (when compare-windows-recenter |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
235 (recenter (car compare-windows-recenter)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
236 (with-selected-window w2 (recenter (cadr compare-windows-recenter))))) |
257 | 237 |
238 (if (= (point) opoint1) | |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
239 (if (not sync-func) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
240 (ding) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
241 ;; If points are not advanced (i.e. already on mismatch position), |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
242 ;; then synchronize points between both windows |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
243 (save-excursion |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
244 (setq compare-windows-sync-point nil) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
245 (funcall sync-func) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
246 (setq p1 (point)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
247 (set-buffer b2) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
248 (goto-char p2) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
249 (funcall sync-func) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
250 (setq p2 (point))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
251 (goto-char p1) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
252 (set-window-point w2 p2) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
253 (when compare-windows-recenter |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
254 (recenter (car compare-windows-recenter)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
255 (with-selected-window w2 (recenter (cadr compare-windows-recenter)))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
256 ;; If points are still not synchronized, then ding |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
257 (when (and (= p1 opoint1) (= p2 opoint2)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
258 ;; Display error message when current points in two windows |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
259 ;; are unmatched and next matching points can't be found. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
260 (compare-windows-dehighlight) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
261 (ding) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
262 (message "No more matching points")))))) |
584 | 263 |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
264 ;; Move forward over whatever might be called whitespace. |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
265 ;; compare-windows-whitespace is a regexp that matches whitespace. |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
266 ;; Match it at various starting points before the original point |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
267 ;; and find the latest point at which a match ends. |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
268 ;; Don't try starting points before START, though. |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
269 ;; Value is non-nil if whitespace is found. |
4925
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
270 ;; If there is whitespace before point, but none after, |
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
271 ;; then return t, but don't advance point. |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
272 (defun compare-windows-skip-whitespace (start) |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
273 (let ((end (point)) |
4925
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
274 (beg (point)) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
275 (opoint (point))) |
5005
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
276 (while (or (and (looking-at compare-windows-whitespace) |
4925
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
277 (<= end (match-end 0)) |
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
278 ;; This match goes past END, so advance END. |
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
279 (progn (setq end (match-end 0)) |
5005
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
280 (> (point) start))) |
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
281 (and (/= (point) start) |
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
282 ;; Consider at least the char before point, |
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
283 ;; unless it is also before START. |
c762abae3964
(compare-windows-skip-whitespace): Swap the two
Richard M. Stallman <rms@gnu.org>
parents:
4925
diff
changeset
|
284 (= (point) opoint))) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
285 ;; keep going back until whitespace |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
286 ;; doesn't extend to or past end |
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
287 (forward-char -1)) |
4925
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
288 (setq beg (point)) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
289 (goto-char end) |
4925
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
290 (or (/= beg opoint) |
76fb8b35df3f
(compare-windows-skip-whitespace): Return t
Richard M. Stallman <rms@gnu.org>
parents:
4072
diff
changeset
|
291 (/= end opoint)))) |
4072
d38c94145afe
(compare-windows-skip-whitespace): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2307
diff
changeset
|
292 |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
293 ;; Move forward to the next synchronization regexp. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
294 (defun compare-windows-sync-regexp () |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
295 (if (stringp compare-windows-sync) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
296 (re-search-forward compare-windows-sync nil t))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
297 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
298 ;; Function works in two passes: one call on each window. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
299 ;; On the first call both matching points are computed, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
300 ;; and one of them is stored in compare-windows-sync-point |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
301 ;; to be used when this function is called on second window. |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
302 (defun compare-windows-sync-default-function () |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
303 (if (not compare-windows-sync-point) |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
304 (let* ((w1 (selected-window)) |
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
305 (w2 (next-window w1)) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
306 (b2 (window-buffer w2)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
307 (point-max2 (with-current-buffer b2 (point-max))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
308 (op2 (window-point w2)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
309 (op1 (point)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
310 (region-size compare-windows-sync-string-size) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
311 (string-size compare-windows-sync-string-size) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
312 in-bounds-p s1 p2 p12s p12) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
313 (while (and |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
314 ;; until matching points are found |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
315 (not p12s) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
316 ;; until size exceeds the maximum points of both buffers |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
317 ;; (bounds below take care to not overdo in each of them) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
318 (or (setq in-bounds-p (< region-size (max (- (point-max) op1) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
319 (- point-max2 op2)))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
320 ;; until string size becomes smaller than 4 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
321 (> string-size 4))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
322 (if in-bounds-p |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
323 ;; make the next search in the double-sized region; |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
324 ;; on first iteration it is 2*compare-windows-sync-string-size, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
325 ;; on last iterations it exceeds both buffers maximum points |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
326 (setq region-size (* region-size 2)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
327 ;; if region size exceeds the maximum points of both buffers, |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
328 ;; then start to halve the string size until 4; |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
329 ;; this helps to find differences near the end of buffers |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
330 (setq string-size (/ string-size 2))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
331 (let ((p1 op1) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
332 (bound1 (- (min (+ op1 region-size) (point-max)) string-size)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
333 (bound2 (min (+ op2 region-size) point-max2))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
334 (while (< p1 bound1) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
335 (setq s1 (buffer-substring-no-properties p1 (+ p1 string-size))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
336 (setq p2 (with-current-buffer b2 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
337 (goto-char op2) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
338 (let ((case-fold-search compare-ignore-case)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
339 (search-forward s1 bound2 t)))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
340 (when p2 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
341 (setq p2 (- p2 string-size)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
342 (setq p12s (cons (list (+ p1 p2) p1 p2) p12s))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
343 (setq p1 (1+ p1))))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
344 (when p12s |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
345 ;; use closest matching points (i.e. points with minimal sum) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
346 (setq p12 (cdr (assq (apply 'min (mapcar 'car p12s)) p12s))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
347 (goto-char (car p12)) |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
348 (compare-windows-highlight op1 (car p12) (current-buffer) w1 |
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
349 op2 (cadr p12) b2 w2)) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
350 (setq compare-windows-sync-point (or (cadr p12) t))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
351 ;; else set point in the second window to the pre-calculated value |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
352 (if (numberp compare-windows-sync-point) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
353 (goto-char compare-windows-sync-point)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
354 (setq compare-windows-sync-point nil))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
355 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
356 ;; Highlight differences |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
357 (defun compare-windows-highlight (beg1 end1 b1 w1 beg2 end2 b2 w2) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
358 (when compare-windows-highlight |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
359 (if compare-windows-overlay1 |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
360 (move-overlay compare-windows-overlay1 beg1 end1 b1) |
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
361 (setq compare-windows-overlay1 (make-overlay beg1 end1 b1)) |
63220
b14224937156
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384
Miles Bader <miles@gnu.org>
parents:
58601
diff
changeset
|
362 (overlay-put compare-windows-overlay1 'face 'compare-windows) |
67428
9e33a6897729
(compare-windows-highlight): Change overlay priority from 1 to 1000.
Juri Linkov <juri@jurta.org>
parents:
64993
diff
changeset
|
363 (overlay-put compare-windows-overlay1 'priority 1000)) |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
364 (overlay-put compare-windows-overlay1 'window w1) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
365 (if compare-windows-overlay2 |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
366 (move-overlay compare-windows-overlay2 beg2 end2 b2) |
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
367 (setq compare-windows-overlay2 (make-overlay beg2 end2 b2)) |
63220
b14224937156
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384
Miles Bader <miles@gnu.org>
parents:
58601
diff
changeset
|
368 (overlay-put compare-windows-overlay2 'face 'compare-windows) |
67428
9e33a6897729
(compare-windows-highlight): Change overlay priority from 1 to 1000.
Juri Linkov <juri@jurta.org>
parents:
64993
diff
changeset
|
369 (overlay-put compare-windows-overlay2 'priority 1000)) |
58601
4663989dd34a
(compare-windows-highlight): Attach each overlay
Juri Linkov <juri@jurta.org>
parents:
55703
diff
changeset
|
370 (overlay-put compare-windows-overlay2 'window w2) |
69127
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
371 (if (not (eq compare-windows-highlight 'persistent)) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
372 ;; Remove highlighting before next command is executed |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
373 (add-hook 'pre-command-hook 'compare-windows-dehighlight) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
374 (when compare-windows-overlay1 |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
375 (push (copy-overlay compare-windows-overlay1) compare-windows-overlays1) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
376 (delete-overlay compare-windows-overlay1)) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
377 (when compare-windows-overlay2 |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
378 (push (copy-overlay compare-windows-overlay2) compare-windows-overlays2) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
379 (delete-overlay compare-windows-overlay2))))) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
380 |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
381 (defun compare-windows-dehighlight () |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
382 "Remove highlighting created by `compare-windows-highlight'." |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
383 (interactive) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
384 (remove-hook 'pre-command-hook 'compare-windows-dehighlight) |
69127
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
385 (mapc 'delete-overlay compare-windows-overlays1) |
a7ce66a8df73
(compare-windows-highlight): Add new value
Juri Linkov <juri@jurta.org>
parents:
68651
diff
changeset
|
386 (mapc 'delete-overlay compare-windows-overlays2) |
52893
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
387 (and compare-windows-overlay1 (delete-overlay compare-windows-overlay1)) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
388 (and compare-windows-overlay2 (delete-overlay compare-windows-overlay2))) |
a8714ce78ab1
(compare-windows-whitespace): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
389 |
584 | 390 (provide 'compare-w) |
391 | |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
392 ;; arch-tag: 4177aab1-48e6-4a98-b7a1-000ee285de46 |
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
393 ;;; compare-w.el ends here |