Function: ruby-forward-sexp
ruby-forward-sexp is an interactive and byte-compiled function defined
in ruby-mode.el.gz.
This command is obsolete since 28.1; use forward-sexp instead.
Signature
(ruby-forward-sexp &optional ARG)
Documentation
Move forward across one balanced expression (sexp).
With ARG, do it many times. Negative ARG means move backward.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ruby-mode.el.gz
(defun ruby-forward-sexp (&optional arg)
"Move forward across one balanced expression (sexp).
With ARG, do it many times. Negative ARG means move backward."
(declare (obsolete forward-sexp "28.1"))
;; TODO: Document body
(interactive "p")
(cond
(ruby-use-smie (forward-sexp arg))
((and (numberp arg) (< arg 0))
(with-suppressed-warnings ((obsolete ruby-backward-sexp))
(ruby-backward-sexp (- arg))))
(t
(let ((i (or arg 1)))
(condition-case nil
(while (> i 0)
(skip-syntax-forward " ")
(if (looking-at ",\\s *") (goto-char (match-end 0)))
(cond ((looking-at "\\?\\(\\\\[CM]-\\)*\\\\?\\S ")
(goto-char (match-end 0)))
((progn
(skip-chars-forward "-,.:;|&^~=!?+*")
(looking-at "\\s("))
(goto-char (scan-sexps (point) 1)))
((and (looking-at (concat "\\<\\(" ruby-block-beg-re
"\\)\\>"))
(not (eq (char-before (point)) ?.))
(not (eq (char-before (point)) ?:)))
(ruby-end-of-block)
(forward-word-strictly 1))
((looking-at "\\(\\$\\|@@?\\)?\\sw")
(while (progn
(while (progn (forward-word-strictly 1)
(looking-at "_")))
(cond ((looking-at "::") (forward-char 2) t)
((> (skip-chars-forward ".") 0))
((looking-at "\\?\\|!\\(=[~=>]\\|[^~=]\\)")
(forward-char 1) nil)))))
((let (state expr)
(while
(progn
(setq expr (or expr (ruby-expr-beg)
(looking-at "%\\sw?\\Sw\\|[\"'`/]")))
(nth 1 (setq state (apply #'ruby-parse-partial
nil state))))
(setq expr t)
(skip-chars-forward "<"))
(not expr))))
(setq i (1- i)))
((error) (forward-word-strictly 1)))
i))))