In Vim I can :set wrapscan
so that when I do an incremental search, the cursor jumps to the first match whether the first match is above or below the cursor.
In Emacs, if I start a search via C-s
, the search fails saying Failing I-search if the first match is above the cursor. If I hit C-s
again it then wraps the search, saying Wrapped I-search. How do I wrap and jump the cursor by default as in Vim, without having to C-s
a second time?
EDIT: jurta's answer got me most of the way there. Thanks jurta! This is the behavior I wanted:
(defadvice isearch-search (after isearch-no-fail activate)
(unless isearch-success
(ad-disable-advice 'isearch-search 'after 'isearch-no-fail)
(ad-activate 'isearch-search)
(isearch-repeat (if isearch-forward 'forward))
(ad-enable-advice 'isearch-search 'after 'isearch-no-fail)
(ad-activate 'isearch-search)))