# HG changeset patch # User Juri Linkov # Date 1226432917 0 # Node ID 6b08a7bfb89eb43a645b3b141c8687b6fabcd341 # Parent ee792794d888cc5487c2395b6aeaf2140013eb75 * isearch.el (isearch-query-replace, isearch-highlight-regexp): Bind `isearch-recursive-edit' to nil to prevent calling `exit-recursive-edit' in `isearch-done' that terminates the execution of these commands when it is non-nil. Call `exit-recursive-edit' explicitly at the end. (isearch-occur): For word search construct the correct regexp with word boundaries to proceed with occur. diff -r ee792794d888 -r 6b08a7bfb89e lisp/isearch.el --- a/lisp/isearch.el Tue Nov 11 19:43:09 2008 +0000 +++ b/lisp/isearch.el Tue Nov 11 19:48:37 2008 +0000 @@ -1347,8 +1347,13 @@ (let ((case-fold-search isearch-case-fold-search) ;; set `search-upper-case' to nil to not call ;; `isearch-no-upper-case-p' in `perform-replace' - (search-upper-case nil)) - (isearch-done) + (search-upper-case nil) + ;; Set `isearch-recursive-edit' to nil to prevent calling + ;; `exit-recursive-edit' in `isearch-done' that terminates + ;; the execution of this command when it is non-nil. + ;; We call `exit-recursive-edit' explicitly at the end below. + (isearch-recursive-edit nil)) + (isearch-done nil t) (isearch-clean-overlays) (if (and isearch-other-end (< isearch-other-end (point)) @@ -1369,7 +1374,8 @@ isearch-regexp) t isearch-regexp (or delimited isearch-word) nil nil (if (and transient-mark-mode mark-active) (region-beginning)) - (if (and transient-mark-mode mark-active) (region-end))))) + (if (and transient-mark-mode mark-active) (region-end)))) + (and isearch-recursive-edit (exit-recursive-edit))) (defun isearch-query-replace-regexp (&optional delimited) "Start `query-replace-regexp' with string to replace from last search string. @@ -1384,7 +1390,10 @@ string. NLINES has the same meaning as in `occur'." (interactive (list - (if isearch-regexp isearch-string (regexp-quote isearch-string)) + (cond + (isearch-word (concat "\\b" (regexp-quote isearch-string) "\\b")) + (isearch-regexp isearch-string) + (t (regexp-quote isearch-string))) (if current-prefix-arg (prefix-numeric-value current-prefix-arg)))) (let ((case-fold-search isearch-case-fold-search) ;; set `search-upper-case' to nil to not call @@ -1401,8 +1410,14 @@ argument from the last search regexp or a quoted search string, and reads its face argument using `hi-lock-read-face-name'." (interactive) - (isearch-done) - (isearch-clean-overlays) + (let ( + ;; Set `isearch-recursive-edit' to nil to prevent calling + ;; `exit-recursive-edit' in `isearch-done' that terminates + ;; the execution of this command when it is non-nil. + ;; We call `exit-recursive-edit' explicitly at the end below. + (isearch-recursive-edit nil)) + (isearch-done nil t) + (isearch-clean-overlays)) (require 'hi-lock nil t) (let ((string (cond (isearch-regexp isearch-string) ((if (and (eq isearch-case-fold-search t) @@ -1420,7 +1435,8 @@ (regexp-quote s)))) isearch-string "")) (t (regexp-quote isearch-string))))) - (hi-lock-face-buffer string (hi-lock-read-face-name)))) + (hi-lock-face-buffer string (hi-lock-read-face-name))) + (and isearch-recursive-edit (exit-recursive-edit))) (defun isearch-delete-char ()