;; Should isearch be terminated after doing one search?
(defvar isearch-nonincremental nil)
+;; New value of isearch-nonincremental after isearch-edit-string.
+(defvar isearch-new-nonincremental nil)
+
;; New value of isearch-forward after isearch-edit-string.
(defvar isearch-new-forward nil)
"Exit Isearch mode, run BODY, and reinvoke the pending search.
You can update the global isearch variables by setting new values to
`isearch-new-string', `isearch-new-message', `isearch-new-forward',
-`isearch-new-regexp-function', `isearch-new-case-fold'."
+`isearch-new-regexp-function', `isearch-new-case-fold', `isearch-new-nonincremental'."
;; This code is very hairy for several reasons, explained in the code.
;; Mainly, isearch-mode must be terminated while editing and then restarted.
;; If there were a way to catch any change of buffer from the minibuffer,
;; Editing doesn't back up the search point. Should it?
`(condition-case nil
(progn
- (let ((isearch-nonincremental isearch-nonincremental)
+ (let ((isearch-new-nonincremental isearch-nonincremental)
;; Locally bind all isearch global variables to protect them
;; from recursive isearching.
(setq isearch-string isearch-new-string
isearch-message isearch-new-message
isearch-forward isearch-new-forward
+ isearch-nonincremental isearch-new-nonincremental
isearch-regexp-function isearch-new-regexp-function
isearch-case-fold-search isearch-new-case-fold
multi-isearch-current-buffer multi-isearch-current-buffer-new
(defun isearch-nonincremental-exit-minibuffer ()
(interactive)
- (setq isearch-nonincremental t)
+ (setq isearch-new-nonincremental t)
(exit-minibuffer))
-;; Changing the value of `isearch-nonincremental' has no effect here,
-;; because `isearch-edit-string' ignores this change. Thus marked as obsolete.
+;; It makes no sense to change the value of `isearch-new-nonincremental'
+;; from nil to t during `isearch-edit-string'. Thus marked as obsolete.
(make-obsolete 'isearch-nonincremental-exit-minibuffer 'exit-minibuffer "24.4")
(defun isearch-forward-exit-minibuffer ()
"Resume isearching forward from the minibuffer that edits the search string."
(interactive)
- (setq isearch-new-forward t)
+ (setq isearch-new-forward t isearch-new-nonincremental nil)
(exit-minibuffer))
(defun isearch-reverse-exit-minibuffer ()
"Resume isearching backward from the minibuffer that edits the search string."
(interactive)
- (setq isearch-new-forward nil)
+ (setq isearch-new-forward nil isearch-new-nonincremental nil)
(exit-minibuffer))
(defun isearch-cancel ()