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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
ddcbd2c1b70d Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 72432
diff changeset
3 ;; Copyright (C) 1986, 1989, 1993, 1997, 2001, 2002, 2003, 2004,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
6 ;; Maintainer: FSF
45078
829beb9a6a4b Follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 44202
diff changeset
7 ;; Keywords: convenience files
257
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
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: 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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
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: 93975
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
257
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
34 "Compare text between windows."
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
35 :prefix "compare-"
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
36 :group 'tools)
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
51 whitespace is considered to match, and is skipped."
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
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
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 17542
diff changeset
63 :type 'boolean
76719
7d51f6ae5d8a (compare-windows): Rename customization group
Juri Linkov <juri@jurta.org>
parents: 75347
diff changeset
64 :group 'compare-windows)
257
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 ;;;###autoload
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (defun compare-windows (ignore-whitespace)
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 "Compare text in current window with text in next window.
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 Compares the text starting at point in each window,
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 moving over text in each one as far as they match.
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 (opoint1 (point))
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (if (eq w2 (selected-window))
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (error "No other window"))
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (setq p2 (window-point w2)
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 b2 (window-buffer w2))
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (setq opoint2 p2)
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (save-excursion
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (set-buffer b2)
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237
e5ba2ba35226 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 257
diff changeset
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
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 257
diff changeset
390 (provide 'compare-w)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 257
diff changeset
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