Function: evil-ex-start-search

evil-ex-start-search is a byte-compiled function defined in evil-search.el.

Signature

(evil-ex-start-search DIRECTION COUNT)

Documentation

Start a new search in a certain DIRECTION.

Source Code

;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-search.el
(defun evil-ex-start-search (direction count)
  "Start a new search in a certain DIRECTION."
  (setq evil-ex-search-count count
        evil-ex-search-direction direction
        evil-ex-search-start-point (point)
        evil-ex-last-was-search t)
  ;; store buffer and window where the search started
  (let* ((evil-ex-original-buffer (current-buffer))
         ;; read the search string
         (minibuffer-local-map evil-ex-search-keymap)
         (search-string
          (condition-case err
              (minibuffer-with-setup-hook #'evil-ex-search-start-session
                (read-string
                 (if (eq evil-ex-search-direction 'forward) "/" "?")
                 (when evil-ex-search-history
                   (propertize (car evil-ex-search-history) 'face 'shadow))
                 'evil-ex-search-history))
            (quit
             (evil-ex-delete-hl 'evil-ex-search)
             (goto-char evil-ex-search-start-point)
             (signal (car err) (cdr err))))))
    ;; pattern entered successful
    (goto-char (if (eq evil-ex-search-direction 'forward)
                   (1+ evil-ex-search-start-point)
                 (1- evil-ex-search-start-point)))
    (cl-destructuring-bind (success pattern offset)
        (evil-ex-search-full-pattern search-string
                                     evil-ex-search-count
                                     evil-ex-search-direction)
      (setq evil-ex-search-pattern pattern
            evil-ex-search-offset offset)
      (cond
       ((memq success '(t wrap))
        (goto-char (match-beginning 0))
        (setq evil-ex-search-match-beg (match-beginning 0)
              evil-ex-search-match-end (match-end 0))
        (evil-ex-search-goto-offset offset)
        (evil-push-search-history search-string (eq direction 'forward))
        (if evil-ex-search-incremental
            (unless evil-ex-search-persistent-highlight
              (evil-ex-delete-hl 'evil-ex-search))
          (when evil-ex-search-highlight-all
            (evil-ex-search-activate-highlight pattern))))
       (t
        (goto-char evil-ex-search-start-point)
        (evil-ex-delete-hl 'evil-ex-search)
        (signal 'search-failed (list search-string)))))))