From: Richard M. Stallman Date: Sat, 16 Jul 2005 19:13:30 +0000 (+0000) Subject: (isearch-mode-end-hook-quit): New variable. X-Git-Tag: emacs-pretest-22.0.90~8079 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=87e976736525a9cb2ce001d15ce39295c500fbbf;p=emacs.git (isearch-mode-end-hook-quit): New variable. (isearch-done): Bind it. (isearch-mode-end-hook): Doc fix. --- diff --git a/lisp/isearch.el b/lisp/isearch.el index 58c8fd5829a..44d7bccb8e6 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -154,7 +154,12 @@ command history." "Function(s) to call after starting up an incremental search.") (defvar isearch-mode-end-hook nil - "Function(s) to call after terminating an incremental search.") + "Function(s) to call after terminating an incremental search. +When these functions are called, `isearch-mode-end-hook-quit' +is non-nil if the user quit the search.") + +(defvar isearch-mode-end-hook-quit nil + "Non-nil while running `isearch-mode-end-hook' if user quit the search.") (defvar isearch-wrap-function nil "Function to call to wrap the search when search is failed. @@ -744,6 +749,12 @@ is treated as a regexp. See \\[isearch-forward] for more info." (setq disable-point-adjustment t)) (defun isearch-done (&optional nopush edit) + "Exit Isearch mode. +For successful search, pass no args. +For a failing search, NOPUSH is t. +For going to the minibuffer to edit the search string, +NOPUSH is t and EDIT is t." + (if isearch-resume-in-command-history (let ((command `(isearch-resume ,isearch-string ,isearch-regexp ,isearch-word ,isearch-forward @@ -795,7 +806,8 @@ is treated as a regexp. See \\[isearch-forward] for more info." ;; Update the ring data. (isearch-update-ring isearch-string isearch-regexp)) - (run-hooks 'isearch-mode-end-hook) + (let ((isearch-mode-end-hook-quit (and nopush (not edit)))) + (run-hooks 'isearch-mode-end-hook)) ;; If there was movement, mark the starting position. ;; Maybe should test difference between and set mark iff > threshold.