changeset 64399:d41de3ff06c8

(isearch-mode-end-hook-quit): New variable. (isearch-done): Bind it. (isearch-mode-end-hook): Doc fix.
author Richard M. Stallman <rms@gnu.org>
date Sat, 16 Jul 2005 19:13:30 +0000
parents de27914c814e
children e169c8755108
files lisp/isearch.el
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/isearch.el	Sat Jul 16 19:04:57 2005 +0000
+++ b/lisp/isearch.el	Sat Jul 16 19:13:30 2005 +0000
@@ -154,7 +154,12 @@
   "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 @@
   (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 @@
       ;; 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.