mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-10 08:10:21 -08:00
(lisp-indent-defun-method, common-lisp-indent-function): Add doc strings.
This commit is contained in:
parent
4735b74e57
commit
0ae8ebe848
2 changed files with 79 additions and 3 deletions
|
|
@ -1,7 +1,7 @@
|
|||
;;; cl-indent.el --- enhanced lisp-indent mode
|
||||
|
||||
;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004,
|
||||
;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||
;; 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Richard Mlynarik <mly@eddie.mit.edu>
|
||||
;; Created: July 1987
|
||||
|
|
@ -103,7 +103,8 @@ If nil, indent backquoted lists as data, i.e., like quoted lists."
|
|||
|
||||
|
||||
(defvar lisp-indent-error-function)
|
||||
(defvar lisp-indent-defun-method '(4 &lambda &body))
|
||||
(defvar lisp-indent-defun-method '(4 &lambda &body)
|
||||
"Indentation for function with `common-lisp-indent-function' property `defun'.")
|
||||
|
||||
|
||||
(defun extended-loop-p (loop-start)
|
||||
|
|
@ -135,6 +136,75 @@ If nil, indent backquoted lists as data, i.e., like quoted lists."
|
|||
|
||||
;;;###autoload
|
||||
(defun common-lisp-indent-function (indent-point state)
|
||||
"Function to indent the arguments of a Lisp function call.
|
||||
This is suitable for use as the value of the variable
|
||||
`lisp-indent-function'. INDENT-POINT is the point at which the
|
||||
indentation function is called, and STATE is the
|
||||
`parse-partial-sexp' state at that position. Browse the
|
||||
`lisp-indent' customize group for options affecting the behavior
|
||||
of this function.
|
||||
|
||||
If the indentation point is in a call to a Lisp function, that
|
||||
function's common-lisp-indent-function property specifies how
|
||||
this function should indent it. Possible values for this
|
||||
property are:
|
||||
|
||||
* defun, meaning indent according to `lisp-indent-defun-method';
|
||||
i.e., like (4 &lambda &body), as explained below.
|
||||
|
||||
* any other symbol, meaning a function to call. The function should
|
||||
take the arguments: PATH STATE INDENT-POINT SEXP-COLUMN NORMAL-INDENT.
|
||||
PATH is a list of integers describing the position of point in terms of
|
||||
list-structure with respect to the containing lists. For example, in
|
||||
((a b c (d foo) f) g), foo has a path of (0 3 1). In other words,
|
||||
to reach foo take the 0th element of the outermost list, then
|
||||
the 3rd element of the next list, and finally the 1st element.
|
||||
STATE and INDENT-POINT are as in the arguments to
|
||||
`common-lisp-indent-function'. SEXP-COLUMN is the column of
|
||||
the open parenthesis of the innermost containing list.
|
||||
NORMAL-INDENT is the column the indentation point was
|
||||
originally in. This function should behave like `lisp-indent-259'.
|
||||
|
||||
* an integer N, meaning indent the first N arguments like
|
||||
function arguments, and any further arguments like a body.
|
||||
This is equivalent to (4 4 ... &body).
|
||||
|
||||
* a list. The list element in position M specifies how to indent the Mth
|
||||
function argument. If there are fewer elements than function arguments,
|
||||
the last list element applies to all remaining arguments. The accepted
|
||||
list elements are:
|
||||
|
||||
* nil, meaning the default indentation.
|
||||
|
||||
* an integer, specifying an explicit indentation.
|
||||
|
||||
* &lambda. Indent the argument (which may be a list) by 4.
|
||||
|
||||
* &rest. When used, this must be the penultimate element. The
|
||||
element after this one applies to all remaining arguments.
|
||||
|
||||
* &body. This is equivalent to &rest lisp-body-indent, i.e., indent
|
||||
all remaining elements by `lisp-body-indent'.
|
||||
|
||||
* &whole. This must be followed by nil, an integer, or a
|
||||
function symbol. This indentation is applied to the
|
||||
associated argument, and as a base indent for all remaining
|
||||
arguments. For example, an integer P means indent this
|
||||
argument by P, and all remaining arguments by P, plus the
|
||||
value specified by their associated list element.
|
||||
|
||||
* a symbol. A function to call, with the 6 arguments specified above.
|
||||
|
||||
* a list, with elements as described above. This applies when the
|
||||
associated function argument is itself a list. Each element of the list
|
||||
specifies how to indent the associated argument.
|
||||
|
||||
For example, the function `case' has an indent property
|
||||
\(4 &rest (&whole 2 &rest 1)), meaning:
|
||||
* indent the first argument by 4.
|
||||
* arguments after the first should be lists, and there may be any number
|
||||
of them. The first list element has an offset of 2, all the rest
|
||||
have an offset of 2+1=3."
|
||||
(if (save-excursion (goto-char (elt state 1))
|
||||
(looking-at "([Ll][Oo][Oo][Pp]"))
|
||||
(common-lisp-loop-part-indentation indent-point state)
|
||||
|
|
@ -149,6 +219,7 @@ If nil, indent backquoted lists as data, i.e., like quoted lists."
|
|||
;; Path describes the position of point in terms of
|
||||
;; list-structure with respect to containing lists.
|
||||
;; `foo' has a path of (0 4 1) in `((a b c (d foo) f) g)'
|
||||
;; (Surely (0 3 1)?).
|
||||
(path ())
|
||||
;; set non-nil when somebody works out the indentation to use
|
||||
calculated
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue