Function: viper-search
viper-search is a byte-compiled function defined in viper-cmd.el.gz.
Signature
(viper-search STRING FORWARD ARG &optional NO-OFFSET INIT-POINT FAIL-IF-NOT-FOUND)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-cmd.el.gz
;; Search for COUNT's occurrence of STRING.
;; Search is forward if FORWARD is non-nil, otherwise backward.
;; INIT-POINT is the position where search is to start.
;; Arguments:
;; (STRING FORW COUNT &optional NO-OFFSET INIT-POINT LIMIT FAIL-IF-NOT-FOUND)
(defun viper-search (string forward arg
&optional no-offset init-point fail-if-not-found)
(if (not (equal string ""))
(let ((val (viper-p-val arg))
(com (viper-getcom arg))
(offset (not no-offset))
(case-fold-search viper-case-fold-search)
(start-point (or init-point (point))))
(deactivate-mark)
(if forward
(condition-case nil
(progn
(if offset (viper-forward-char-carefully))
(if viper-re-search
(progn
(re-search-forward string nil nil val)
(re-search-backward string))
(search-forward string nil nil val)
(search-backward string))
(if (not (equal start-point (point)))
(push-mark start-point t)))
(search-failed
(if (and (not fail-if-not-found) viper-search-wrap-around)
(progn
(message "Search wrapped around BOTTOM of buffer")
(goto-char (point-min))
(viper-search string forward (cons 1 com) t start-point 'fail)
;; don't wait in macros
(or executing-kbd-macro
(memq viper-intermediate-command
'(viper-repeat
viper-digit-argument
viper-command-argument))
(sit-for 2))
;; delete the wrap-around message
(message "")
)
(goto-char start-point)
(error "`%s': %s not found"
string
(if viper-re-search "Pattern" "String"))
)))
;; backward
(condition-case nil
(progn
(if viper-re-search
(re-search-backward string nil nil val)
(search-backward string nil nil val))
(if (not (equal start-point (point)))
(push-mark start-point t)))
(search-failed
(if (and (not fail-if-not-found) viper-search-wrap-around)
(progn
(message "Search wrapped around TOP of buffer")
(goto-char (point-max))
(viper-search string forward (cons 1 com) t start-point 'fail)
;; don't wait in macros
(or executing-kbd-macro
(memq viper-intermediate-command
'(viper-repeat
viper-digit-argument
viper-command-argument))
(sit-for 2))
;; delete the wrap-around message
(message "")
)
(goto-char start-point)
(error "`%s': %s not found"
string
(if viper-re-search "Pattern" "String"))
))))
;; pull up or down if at top/bottom of window
(viper-adjust-window)
;; highlight the result of search
;; don't wait and don't highlight in macros
(or executing-kbd-macro
(memq viper-intermediate-command
'(viper-repeat viper-digit-argument viper-command-argument))
(viper-flash-search-pattern))
)))