Correctly restore original Isearch point. (Bug#4994)
* isearch.el (isearch-mode): Move `isearch-push-state' after `(run-hooks 'isearch-mode-hook)'. (isearch-cancel): When `isearch-push-state-function' is defined, let-bind `isearch-cmds' to the first state (the last element of `isearch-cmds') and call `isearch-top-state' (it calls pop-state function and restores the original point). Otherwise, move point to `isearch-opoint'.
This commit is contained in:
parent
e07278736e
commit
406374109c
2 changed files with 24 additions and 6 deletions
|
@ -1,3 +1,15 @@
|
|||
2009-12-07 Juri Linkov <juri@jurta.org>
|
||||
|
||||
Correctly restore original Isearch point. (Bug#4994)
|
||||
|
||||
* isearch.el (isearch-mode): Move `isearch-push-state' after
|
||||
`(run-hooks 'isearch-mode-hook)'.
|
||||
(isearch-cancel): When `isearch-push-state-function' is defined,
|
||||
let-bind `isearch-cmds' to the first state (the last element of
|
||||
`isearch-cmds') and call `isearch-top-state' (it calls pop-state
|
||||
function and restores the original point). Otherwise, move point
|
||||
to `isearch-opoint'.
|
||||
|
||||
2009-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* international/mule-cmds.el (ucs-names): Weed out at compile-time the
|
||||
|
|
|
@ -798,10 +798,14 @@ It is called by the function `isearch-forward' and other related functions."
|
|||
(setq isearch-mode " Isearch") ;; forward? regexp?
|
||||
(force-mode-line-update)
|
||||
|
||||
(isearch-push-state)
|
||||
|
||||
(setq overriding-terminal-local-map isearch-mode-map)
|
||||
(run-hooks 'isearch-mode-hook)
|
||||
|
||||
;; Pushing the initial state used to be before running isearch-mode-hook,
|
||||
;; but a hook might set `isearch-push-state-function' used in
|
||||
;; `isearch-push-state' to save mode-specific initial state. (Bug#4994)
|
||||
(isearch-push-state)
|
||||
|
||||
(isearch-update)
|
||||
|
||||
(add-hook 'mouse-leave-buffer-hook 'isearch-done)
|
||||
|
@ -1212,10 +1216,12 @@ If first char entered is \\[isearch-yank-word-or-char], then do word search inst
|
|||
(defun isearch-cancel ()
|
||||
"Terminate the search and go back to the starting point."
|
||||
(interactive)
|
||||
(if (functionp (isearch-pop-fun-state (car (last isearch-cmds))))
|
||||
(funcall (isearch-pop-fun-state (car (last isearch-cmds)))
|
||||
(car (last isearch-cmds))))
|
||||
(goto-char isearch-opoint)
|
||||
(if (and isearch-push-state-function isearch-cmds)
|
||||
;; For defined push-state function, restore the first state.
|
||||
;; This calls pop-state function and restores original point.
|
||||
(let ((isearch-cmds (last isearch-cmds)))
|
||||
(isearch-top-state))
|
||||
(goto-char isearch-opoint))
|
||||
(isearch-done t) ; exit isearch
|
||||
(isearch-clean-overlays)
|
||||
(signal 'quit nil)) ; and pass on quit signal
|
||||
|
|
Loading…
Add table
Reference in a new issue