Mercurial > emacs
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.