+2004-12-12 Juri Linkov <juri@jurta.org>
+
+ * isearch.el (isearch-edit-string): Set 7th arg of
+ `read-from-minibuffer' to `t' to inherit the current input
+ method (whose name is indicated by [IM] in the minibuffer prompt)
+ from the current buffer to the minibuffer.
+ (isearch-lazy-highlight-update): Put body to `with-local-quit'
+ to allow C-g quitting for lazy highlighting looping inside the
+ search with nested repetition operators. Add overlay to the list
+ before setting its face and other properties to avoid the case of
+ code quitting after placing the new overlay but before it's
+ recorded on the list. Select the window where isearch was
+ activated, to highlight matches in the right window when isearch
+ switches the current window to the minibuffer.
+
+ * international/isearch-x.el
+ (isearch-process-search-multibyte-characters):
+ Use `isearch-message' as initial input for `read-string' instead
+ of adding it to the minibuffer prompt. After reading a string
+ remove the initial value of `isearch-message' from the string.
+
+ * replace.el (replace-match-maybe-edit): Doc fix.
+ (perform-replace): Don't call `replace-highlight' when automatic
+ replacement is requested in literal mode, since it is intended
+ only to highlight words during entering a new replacement string
+ for \? in non-literal mode.
+
+ * replace.el (query-replace-highlight): Add new value `isearch'
+ that allows query replacement to use isearch highlighting.
+ Change type from `boolean' to `choice'. Doc fix.
+ (replace-highlight, replace-dehighlight, perform-replace):
+ Use isearch highlighting if query-replace-highlight eq `isearch'.
+
2004-12-11 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/checkdoc.el (checkdoc-continue, checkdoc-comments)
;; (match-data); otherwise it is t if a match is possible at point.
(match-again t)
+ (isearch-string isearch-string)
+ (isearch-regexp isearch-regexp)
(message
(if query-flag
(substitute-command-keys
(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))
+
(push-mark)
(undo-boundary)
(unwind-protect
(setq unread-command-events
(append (listify-key-sequence key)
unread-command-events))
- (setq done t))))
+ (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
+ (setq isearch-string search-string
+ isearch-regexp regexp-flag)))
;; Record previous position for ^ when we move on.
;; Change markers to numbers in the match data
;; since lots of markers slow down editing.
(if (= replace-count 1) "" "s")))
(and keep-going stack)))
-(defcustom query-replace-highlight t
- "*Non-nil means to highlight words during query replacement."
- :type 'boolean
+(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))
:group 'matching)
(defvar replace-overlay nil)
(defun replace-dehighlight ()
- (and replace-overlay
- (progn
- (delete-overlay replace-overlay)
- (setq replace-overlay nil))))
+ (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)
- (and 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)))))
+ (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))))))
;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4
;;; replace.el ends here