Mercurial > emacs
comparison lisp/compare-w.el @ 69127:a7ce66a8df73
(compare-windows-highlight): Add new value
`persistent' and change :type from `boolean' to `choice'.
(compare-windows-overlays1, compare-windows-overlays2):
New internal variables.
(compare-windows-highlight): If compare-windows-highlight is
`persistent', add current overlays to compare-windows-overlays[12]
instead of adding compare-windows-dehighlight to pre-command-hook.
(compare-windows-dehighlight): Delete all overlays from
compare-windows-overlays[12].
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Thu, 23 Feb 2006 21:41:26 +0000 |
parents | 3bd95f4f2941 |
children | 7b77bbd3e40c 34c8b755296d |
comparison
equal
deleted
inserted
replaced
69126:0a4cb581dcfa | 69127:a7ce66a8df73 |
---|---|
115 :type '(list sexp sexp) | 115 :type '(list sexp sexp) |
116 :group 'compare-w | 116 :group 'compare-w |
117 :version "22.1") | 117 :version "22.1") |
118 | 118 |
119 (defcustom compare-windows-highlight t | 119 (defcustom compare-windows-highlight t |
120 "*Non-nil means compare-windows highlights the differences." | 120 "*Non-nil means compare-windows highlights the differences. |
121 :type 'boolean | 121 The value t removes highlighting immediately after invoking a command |
122 other than `compare-windows'. | |
123 The value `persistent' leaves all highlighted differences. You can clear | |
124 out all highlighting later with the command `compare-windows-dehighlight'." | |
125 :type '(choice (const :tag "No highlighting" nil) | |
126 (const :tag "Persistent highlighting" persistent) | |
127 (other :tag "Highlight until next command" t)) | |
122 :group 'compare-w | 128 :group 'compare-w |
123 :version "22.1") | 129 :version "22.1") |
124 | 130 |
125 (defface compare-windows | 131 (defface compare-windows |
126 '((t :inherit lazy-highlight)) | 132 '((t :inherit lazy-highlight)) |
128 :group 'compare-w | 134 :group 'compare-w |
129 :version "22.1") | 135 :version "22.1") |
130 | 136 |
131 (defvar compare-windows-overlay1 nil) | 137 (defvar compare-windows-overlay1 nil) |
132 (defvar compare-windows-overlay2 nil) | 138 (defvar compare-windows-overlay2 nil) |
139 (defvar compare-windows-overlays1 nil) | |
140 (defvar compare-windows-overlays2 nil) | |
133 (defvar compare-windows-sync-point nil) | 141 (defvar compare-windows-sync-point nil) |
134 | 142 |
135 ;;;###autoload | 143 ;;;###autoload |
136 (defun compare-windows (ignore-whitespace) | 144 (defun compare-windows (ignore-whitespace) |
137 "Compare text in current window with text in next window. | 145 "Compare text in current window with text in next window. |
349 (move-overlay compare-windows-overlay2 beg2 end2 b2) | 357 (move-overlay compare-windows-overlay2 beg2 end2 b2) |
350 (setq compare-windows-overlay2 (make-overlay beg2 end2 b2)) | 358 (setq compare-windows-overlay2 (make-overlay beg2 end2 b2)) |
351 (overlay-put compare-windows-overlay2 'face 'compare-windows) | 359 (overlay-put compare-windows-overlay2 'face 'compare-windows) |
352 (overlay-put compare-windows-overlay2 'priority 1000)) | 360 (overlay-put compare-windows-overlay2 'priority 1000)) |
353 (overlay-put compare-windows-overlay2 'window w2) | 361 (overlay-put compare-windows-overlay2 'window w2) |
354 ;; Remove highlighting before next command is executed | 362 (if (not (eq compare-windows-highlight 'persistent)) |
355 (add-hook 'pre-command-hook 'compare-windows-dehighlight))) | 363 ;; Remove highlighting before next command is executed |
364 (add-hook 'pre-command-hook 'compare-windows-dehighlight) | |
365 (when compare-windows-overlay1 | |
366 (push (copy-overlay compare-windows-overlay1) compare-windows-overlays1) | |
367 (delete-overlay compare-windows-overlay1)) | |
368 (when compare-windows-overlay2 | |
369 (push (copy-overlay compare-windows-overlay2) compare-windows-overlays2) | |
370 (delete-overlay compare-windows-overlay2))))) | |
356 | 371 |
357 (defun compare-windows-dehighlight () | 372 (defun compare-windows-dehighlight () |
358 "Remove highlighting created by `compare-windows-highlight'." | 373 "Remove highlighting created by `compare-windows-highlight'." |
359 (interactive) | 374 (interactive) |
360 (remove-hook 'pre-command-hook 'compare-windows-dehighlight) | 375 (remove-hook 'pre-command-hook 'compare-windows-dehighlight) |
376 (mapc 'delete-overlay compare-windows-overlays1) | |
377 (mapc 'delete-overlay compare-windows-overlays2) | |
361 (and compare-windows-overlay1 (delete-overlay compare-windows-overlay1)) | 378 (and compare-windows-overlay1 (delete-overlay compare-windows-overlay1)) |
362 (and compare-windows-overlay2 (delete-overlay compare-windows-overlay2))) | 379 (and compare-windows-overlay2 (delete-overlay compare-windows-overlay2))) |
363 | 380 |
364 (provide 'compare-w) | 381 (provide 'compare-w) |
365 | 382 |