Function: evil-forward-quote
evil-forward-quote is a byte-compiled function defined in
evil-common.el.
Signature
(evil-forward-quote QUOTE &optional COUNT)
Documentation
Move point to the end or beginning of a string.
QUOTE is the character delimiting the string. If COUNT is greater than zero point is moved forward otherwise it is moved backwards.
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-common.el
(defun evil-forward-quote (quote &optional count)
"Move point to the end or beginning of a string.
QUOTE is the character delimiting the string. If COUNT is greater
than zero point is moved forward otherwise it is moved
backwards."
(let (reset-parser)
(with-syntax-table (copy-syntax-table (syntax-table))
(unless (= (char-syntax quote) ?\")
(modify-syntax-entry quote "\"")
(setq reset-parser t))
;; global parser state is out of state, use local one
(let* ((pnt (point))
(state (save-excursion
(beginning-of-defun)
(parse-partial-sexp (point) pnt nil nil (syntax-ppss))))
(bnd (bounds-of-evil-string-at-point state)))
(when (and bnd (< (point) (cdr bnd)))
;; currently within a string
(if (> count 0)
(progn
(goto-char (cdr bnd))
(setq count (1- count)))
(goto-char (car bnd))
(setq count (1+ count))))
;; forward motions work with local parser state
(cond
((> count 0)
;; no need to reset global parser state because we only use
;; the local one
(setq reset-parser nil)
(catch 'done
(while (and (> count 0) (not (eobp)))
(setq state (parse-partial-sexp
(point) (point-max) nil nil state 'syntax-table))
(cond
((nth 3 state)
(setq bnd (bounds-of-thing-at-point 'evil-string))
(goto-char (cdr bnd))
(setq count (1- count)))
((eobp) (goto-char pnt) (throw 'done nil))))))
((< count 0)
;; need to update global cache because of backward motion
(setq reset-parser (and reset-parser (point)))
(save-excursion
(beginning-of-defun)
(syntax-ppss-flush-cache (point)))
(catch 'done
(while (and (< count 0) (not (bobp)))
(setq pnt (point))
(while (and (not (bobp))
(or (eobp) (/= (char-after) quote)))
(backward-char))
(cond
((setq bnd (bounds-of-thing-at-point 'evil-string))
(goto-char (car bnd))
(setq count (1+ count)))
((bobp) (goto-char pnt) (throw 'done nil))
(t (backward-char))))))
(t (setq reset-parser nil)))))
(when reset-parser
;; reset global cache
(save-excursion
(goto-char reset-parser)
(beginning-of-defun)
(syntax-ppss-flush-cache (point))))
count))