@vindex completion-auto-wrap
When the window showing the completions is selected, either because
you customized @code{completion-auto-select} or because you switched to
-it by typing @kbd{C-x o}, the @kbd{@key{UP}} (@code{previous-line-completion})
-and @kbd{@key{DOWN}} (@code{next-line-completion}) arrow keys
-move by lines between completion candidates; with a prefix numeric
-argument, they move that many lines. If @code{completion-auto-wrap} is
-non-@code{nil}, these commands will wrap at bottom and top of the
-candidate list.
+it by typing @kbd{C-x o}, the @kbd{@key{UP}} and @kbd{@key{DOWN}} arrow
+keys (@code{previous-line-completion} and @code{next-line-completion},
+respectively) move by lines between completion candidates; with a prefix
+numeric argument, they move that many lines. If
+@code{completion-auto-wrap} is non-@code{nil}, these commands will wrap
+at bottom and top of the candidate list.
@vindex completion-cycle-threshold
If @code{completion-cycle-threshold} is non-@code{nil}, completion
---------- Buffer: foo ----------
@end group
@end example
+
+@vindex forward-sexp-function
+@code{forward-sexp} calls the function that is the value of the variable
+@code{forward-sexp-function}, if that is non-@code{nil}, to do the
+actual work, passing it the same arguments as those with which the
+command was called. Major modes can define their own functions for
+moving over balanced expressions as appropriate for the mode, and set
+this variable to that function.
@end deffn
@deffn Command backward-sexp &optional arg
@findex treesit-forward-sexp
@findex forward-sexp@r{, and tree-sitter}
@findex backward-sexp@r{, and tree-sitter}
-@vindex forward-sexp-function
If Emacs is compiled with tree-sitter, it can use the tree-sitter
parser information to move across syntax constructs. Since what
exactly is considered a sexp varies between languages, a major mode