diff options
author | Juri Linkov <juri@jurta.org> | 2004-12-15 10:10:54 +0000 |
---|---|---|
committer | Juri Linkov <juri@jurta.org> | 2004-12-15 10:10:54 +0000 |
commit | ccec9764dcf01131e1d10c2b525a3ba68ac4c227 (patch) | |
tree | e6bdbbac6dff73c18c0dcd52a11b943bcef9d72d /lisp/replace.el | |
parent | da79720c9e2256e62b9dfb1436e8d83b40ab5045 (diff) | |
download | emacs-ccec9764dcf01131e1d10c2b525a3ba68ac4c227.tar.gz |
(perform-replace): Add isearch-case-fold-search.
Use delimited-flag for isearch-regexp.
Reset isearch-lazy-highlight-last-string to force lazy
highlighting when called from isearch mode.
(query-replace-highlight): Revert defcustom type to boolean.
(query-replace-lazy-highlight): New defcustom.
(query-replace): New face.
(perform-replace, replace-highlight, replace-dehighlight):
Test query-replace-lazy-highlight instead of special value
`isearch' of query-replace-highlight.
(replace-dehighlight): Don't call isearch-dehighlight.
(replace-highlight): Don't call isearch-highlight.
Use face `query-replace' unconditionally.
Diffstat (limited to 'lisp/replace.el')
-rw-r--r-- | lisp/replace.el | 84 |
1 files changed, 48 insertions, 36 deletions
diff --git a/lisp/replace.el b/lisp/replace.el index 646f693cd7f..6ba2e7e9aa8 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1283,6 +1283,7 @@ make, or the user didn't cancel the call." (isearch-string isearch-string) (isearch-regexp isearch-regexp) + (isearch-case-fold-search isearch-case-fold-search) (message (if query-flag (substitute-command-keys @@ -1315,9 +1316,11 @@ make, or the user didn't cancel the call." (if regexp-flag from-string (regexp-quote from-string)) "\\b"))) - (if (eq query-replace-highlight 'isearch) - (setq isearch-string search-string - isearch-regexp regexp-flag)) + (when query-replace-lazy-highlight + (setq isearch-string search-string + isearch-regexp (or delimited-flag regexp-flag) + isearch-case-fold-search case-fold-search + isearch-lazy-highlight-last-string nil)) (push-mark) (undo-boundary) @@ -1535,13 +1538,15 @@ make, or the user didn't cancel the call." (append (listify-key-sequence key) unread-command-events)) (setq done t))) - (when (eq query-replace-highlight 'isearch) - ;; Force isearch rehighlighting - (if (not (memq def '(skip backup))) - (setq isearch-lazy-highlight-last-string nil)) - ;; Restore isearch data in case of isearching during edit + (when query-replace-lazy-highlight + ;; Restore isearch data for lazy highlighting + ;; in case of isearching during recursive edit (setq isearch-string search-string - isearch-regexp regexp-flag))) + isearch-regexp (or delimited-flag regexp-flag) + isearch-case-fold-search case-fold-search) + ;; Force lazy rehighlighting only after replacements + (if (not (memq def '(skip backup))) + (setq isearch-lazy-highlight-last-string nil)))) ;; Record previous position for ^ when we move on. ;; Change markers to numbers in the match data ;; since lots of markers slow down editing. @@ -1576,38 +1581,45 @@ make, or the user didn't cancel the call." (if (= replace-count 1) "" "s"))) (and keep-going stack))) -(defcustom query-replace-highlight - (if (and search-highlight isearch-lazy-highlight) 'isearch t) - "*Non-nil means to highlight words during query replacement. -If `isearch', use isearch highlighting for query replacement." - :type '(choice (const :tag "Highlight" t) - (const :tag "No highlighting" nil) - (const :tag "Isearch highlighting" 'isearch)) +(defcustom query-replace-highlight t + "*Non-nil means to highlight matches during query replacement." + :type 'boolean :group 'matching) +(defcustom query-replace-lazy-highlight t + "*Controls the lazy-highlighting during query replacements. +When non-nil, all text in the buffer matching the current match +is highlighted lazily using isearch lazy highlighting (see +`isearch-lazy-highlight-initial-delay' and +`isearch-lazy-highlight-interval')." + :type 'boolean + :group 'matching + :version "21.4") + +(defface query-replace + '((t (:inherit isearch))) + "Face for highlighting query replacement matches." + :group 'matching + :version "21.4") + (defvar replace-overlay nil) +(defun replace-highlight (beg end) + (if query-replace-highlight + (if replace-overlay + (move-overlay replace-overlay beg end (current-buffer)) + (setq replace-overlay (make-overlay beg end)) + (overlay-put replace-overlay 'priority 1) ;higher than lazy overlays + (overlay-put replace-overlay 'face 'query-replace))) + (if query-replace-lazy-highlight + (isearch-lazy-highlight-new-loop))) + (defun replace-dehighlight () - (cond ((eq query-replace-highlight 'isearch) - (isearch-dehighlight t) - (isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup) - (setq isearch-lazy-highlight-last-string nil)) - (query-replace-highlight - (when replace-overlay - (delete-overlay replace-overlay) - (setq replace-overlay nil))))) - -(defun replace-highlight (start end) - (cond ((eq query-replace-highlight 'isearch) - (isearch-highlight start end) - (isearch-lazy-highlight-new-loop)) - (query-replace-highlight - (if replace-overlay - (move-overlay replace-overlay start end (current-buffer)) - (setq replace-overlay (make-overlay start end)) - (overlay-put replace-overlay 'face - (if (facep 'query-replace) - 'query-replace 'region)))))) + (when replace-overlay + (delete-overlay replace-overlay)) + (when query-replace-lazy-highlight + (isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup) + (setq isearch-lazy-highlight-last-string nil))) ;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4 ;;; replace.el ends here |