30.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 Commands for Editing with Parentheses in The GNU Emacs Manual.
command
forward-list \&optional argβ
This function moves forward across arg
(default 1) balanced groups of parentheses. (Other syntactic entities such as words or paired string quotes are ignored.)
command
backward-list \&optional argβ
This function moves backward across arg
(default 1) balanced groups of parentheses. (Other syntactic entities such as words or paired string quotes are ignored.)
command
up-list \&optional arg escape-strings no-syntax-crossingβ
This function moves forward out of arg
(default 1) levels of parentheses. A negative argument means move backward but still to a less deep spot. If escape-strings
is non-nil
(as it is interactively), move out of enclosing strings as well. If no-syntax-crossing
is non-nil
(as it is interactively), prefer to break out of any enclosing string instead of moving to the start of a list broken across multiple strings. On error, location of point is unspecified.
command
backward-up-list \&optional arg escape-strings no-syntax-crossingβ
This function is just like up-list
, but with a negated argument.
command
down-list \&optional argβ
This function moves forward into arg
(default 1) levels of parentheses. A negative argument means move backward but still go deeper in parentheses (-arg
levels).
command
forward-sexp \&optional argβ
This function moves forward across arg
(default 1) balanced expressions. Balanced expressions include both those delimited by parentheses and other kinds, such as words and string constants. See Parsing Expressions. 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 \&optional argβ
This function moves backward across arg
(default 1) balanced expressions.
command
beginning-of-defun \&optional argβ
This function moves back to the arg
th 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. arg
defaults to 1.
command
end-of-defun \&optional argβ
This function moves forward to the arg
th 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. arg
defaults to 1.
user option
defun-prompt-regexpβ
If non-nil
, this buffer-local 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.
user option
open-paren-in-column-0-is-defun-startβ
If this variableβs value is non-nil
, an open parenthesis in column 0 is considered to be the start of a defun. If it is nil
, an open parenthesis in column 0 has no special meaning. The default is t
. If a string literal happens to have a parenthesis in column 0, escape it with a backslash to avoid a false positive.
variable
beginning-of-defun-functionβ
If non-nil
, this variable holds a function for finding the beginning of a defun. The function beginning-of-defun
calls this function instead of using its normal method, passing it its optional argument. If the argument is non-nil
, the function should move back by that many functions, like beginning-of-defun
does.
variable
end-of-defun-functionβ
If non-nil
, this variable holds a function for finding the end of a defun. The function end-of-defun
calls this function instead of using its normal method.