GNU Emacs Lisp Reference Manual
27.2.6: Moving over Balanced Expressions
Here are several functions concerned with balanced-parenthesis expressions (also called sexps in connection with moving across them in Emacs). The syntax table controls how these functions interpret various characters; see Syntax Tables. See Parsing Expressions, for lower-level primitives for scanning sexps or parts of sexps. For user-level commands, see Lists and Sexps.
- Command: forward-list arg
- This function moves forward across arg balanced groups of parentheses. (Other syntactic entities such as words or paired string quotes are ignored.)
- Command: backward-list arg
- This function moves backward across arg balanced groups of parentheses. (Other syntactic entities such as words or paired string quotes are ignored.)
- Command: up-list arg
- This function moves forward out of arg levels of parentheses. A negative argument means move backward but still to a less deep spot.
- Command: down-list arg
- This function moves forward into arg levels of parentheses. A negative argument means move backward but still go deeper in parentheses (-arg levels).
- Command: forward-sexp arg
- This function moves forward across arg balanced expressions. Balanced expressions include both those delimited by parentheses and other kinds, such as words and string constants. For example,
---------- Buffer: foo ----------
(concat-!- "foo " (car x) y z)
---------- Buffer: foo ----------
(forward-sexp 3)
=> nil
---------- Buffer: foo ----------
(concat "foo " (car x) y-!- z)
---------- Buffer: foo ----------
- Command: backward-sexp arg
- This function moves backward across arg balanced expressions.
- Command: beginning-of-defun arg
- This function moves back to the argth beginning of a defun. If arg is negative, this actually moves forward, but it still moves to the beginning of a defun, not to the end of one.
- Command: end-of-defun arg
- This function moves forward to the argth end of a defun. If arg is negative, this actually moves backward, but it still moves to the end of a defun, not to the beginning of one.
- User Option: defun-prompt-regexp
- If non-
nil, this variable holds a regular expression that specifies what text can appear before the open-parenthesis that starts a defun. That is to say, a defun begins on a line that starts with a match for this regular expression, followed by a character with open-parenthesis syntax.