aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-05-17 17:51:15 -0400
committerStefan Monnier2012-05-17 17:51:15 -0400
commit70b8ef8f7855b9983d17731acad2fdfb4fb2a5be (patch)
treeec06f9a9795c97db3674f9f05df91b9450dd185c
parent9abdc45d8af50112c9afe3c8ee62ad4b9cce47ed (diff)
downloademacs-70b8ef8f7855b9983d17731acad2fdfb4fb2a5be.tar.gz
emacs-70b8ef8f7855b9983d17731acad2fdfb4fb2a5be.zip
* lisp/emacs-lisp/cl-macs.el, lisp/emacs-lisp/cl.el: Move indent info.
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/emacs-lisp/cl-macs.el63
-rw-r--r--lisp/emacs-lisp/cl.el36
3 files changed, 39 insertions, 64 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 043797ba7ee..fcdb2ce65b7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,9 @@
12012-05-17 Stefan Monnier <monnier@iro.umontreal.ca> 12012-05-17 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * emacs-lisp/cl-macs.el, emacs-lisp/cl.el: Move indent info.
4
52012-05-17 Stefan Monnier <monnier@iro.umontreal.ca>
6
3 * emacs-lisp/pcase.el (pcase--u1): Avoid ((lambda ...) ...). 7 * emacs-lisp/pcase.el (pcase--u1): Avoid ((lambda ...) ...).
4 8
5 * emacs-lisp/cl.el: Add edebug specs from cl-specs.el. 9 * emacs-lisp/cl.el: Add edebug specs from cl-specs.el.
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 9fd53d78d92..441ae55758c 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -226,7 +226,8 @@ and BODY is implicitly surrounded by (block NAME ...).
226 cl-lambda-list 226 cl-lambda-list
227 cl-declarations-or-string 227 cl-declarations-or-string
228 [&optional ("interactive" interactive)] 228 [&optional ("interactive" interactive)]
229 def-body))) 229 def-body))
230 (indent 2))
230 (let* ((res (cl-transform-lambda (cons args body) name)) 231 (let* ((res (cl-transform-lambda (cons args body) name))
231 (form (list* 'defun name (cdr res)))) 232 (form (list* 'defun name (cdr res))))
232 (if (car res) (list 'progn (car res) form) form))) 233 (if (car res) (list 'progn (car res) form) form)))
@@ -277,7 +278,8 @@ and BODY is implicitly surrounded by (block NAME ...).
277 278
278\(fn NAME ARGLIST [DOCSTRING] BODY...)" 279\(fn NAME ARGLIST [DOCSTRING] BODY...)"
279 (declare (debug 280 (declare (debug
280 (&define name cl-macro-list cl-declarations-or-string def-body))) 281 (&define name cl-macro-list cl-declarations-or-string def-body))
282 (indent 2))
281 (let* ((res (cl-transform-lambda (cons args body) name)) 283 (let* ((res (cl-transform-lambda (cons args body) name))
282 (form (list* 'defmacro name (cdr res)))) 284 (form (list* 'defmacro name (cdr res))))
283 (if (car res) (list 'progn (car res) form) form))) 285 (if (car res) (list 'progn (car res) form) form)))
@@ -555,7 +557,8 @@ It is a list of elements of the form either:
555 557
556;;;###autoload 558;;;###autoload
557(defmacro destructuring-bind (args expr &rest body) 559(defmacro destructuring-bind (args expr &rest body)
558 (declare (debug (&define cl-macro-list def-form cl-declarations def-body))) 560 (declare (indent 2)
561 (debug (&define cl-macro-list def-form cl-declarations def-body)))
559 (let* ((bind-lets nil) (bind-forms nil) (bind-inits nil) 562 (let* ((bind-lets nil) (bind-forms nil) (bind-inits nil)
560 (bind-defs nil) (bind-block 'cl-none) (bind-enquote nil)) 563 (bind-defs nil) (bind-block 'cl-none) (bind-enquote nil))
561 (cl-do-arglist (or args '(&aux)) expr) 564 (cl-do-arglist (or args '(&aux)) expr)
@@ -576,7 +579,7 @@ If `load' is in WHEN, BODY is evaluated when loaded after top-level compile.
576If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level. 579If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
577 580
578\(fn (WHEN...) BODY...)" 581\(fn (WHEN...) BODY...)"
579 (declare (debug ((&rest &or "compile" "load" "eval") body))) 582 (declare (indent 1) (debug ((&rest &or "compile" "load" "eval") body)))
580 (if (and (fboundp 'cl-compiling-file) (cl-compiling-file) 583 (if (and (fboundp 'cl-compiling-file) (cl-compiling-file)
581 (not cl-not-toplevel) (not (boundp 'for-effect))) ; horrible kludge 584 (not cl-not-toplevel) (not (boundp 'for-effect))) ; horrible kludge
582 (let ((comp (or (memq 'compile when) (memq :compile-toplevel when))) 585 (let ((comp (or (memq 'compile when) (memq :compile-toplevel when)))
@@ -635,7 +638,7 @@ place of a KEYLIST of one atom. A KEYLIST of t or `otherwise' is
635allowed only in the final clause, and matches if no other keys match. 638allowed only in the final clause, and matches if no other keys match.
636Key values are compared by `eql'. 639Key values are compared by `eql'.
637\n(fn EXPR (KEYLIST BODY...)...)" 640\n(fn EXPR (KEYLIST BODY...)...)"
638 (declare (debug (form &rest (sexp body)))) 641 (declare (indent 1) (debug (form &rest (sexp body))))
639 (let* ((temp (if (cl-simple-expr-p expr 3) expr (make-symbol "--cl-var--"))) 642 (let* ((temp (if (cl-simple-expr-p expr 3) expr (make-symbol "--cl-var--")))
640 (head-list nil) 643 (head-list nil)
641 (body (cons 644 (body (cons
@@ -666,7 +669,7 @@ Key values are compared by `eql'.
666 "Like `case', but error if no case fits. 669 "Like `case', but error if no case fits.
667`otherwise'-clauses are not allowed. 670`otherwise'-clauses are not allowed.
668\n(fn EXPR (KEYLIST BODY...)...)" 671\n(fn EXPR (KEYLIST BODY...)...)"
669 (declare (debug case)) 672 (declare (indent 1) (debug case))
670 (list* 'case expr (append clauses '((ecase-error-flag))))) 673 (list* 'case expr (append clauses '((ecase-error-flag)))))
671 674
672;;;###autoload 675;;;###autoload
@@ -677,7 +680,8 @@ satisfies TYPE, the corresponding BODY is evaluated. If no clause succeeds,
677typecase returns nil. A TYPE of t or `otherwise' is allowed only in the 680typecase returns nil. A TYPE of t or `otherwise' is allowed only in the
678final clause, and matches if no other keys match. 681final clause, and matches if no other keys match.
679\n(fn EXPR (TYPE BODY...)...)" 682\n(fn EXPR (TYPE BODY...)...)"
680 (declare (debug (form &rest ([&or cl-type-spec "otherwise"] body)))) 683 (declare (indent 1)
684 (debug (form &rest ([&or cl-type-spec "otherwise"] body))))
681 (let* ((temp (if (cl-simple-expr-p expr 3) expr (make-symbol "--cl-var--"))) 685 (let* ((temp (if (cl-simple-expr-p expr 3) expr (make-symbol "--cl-var--")))
682 (type-list nil) 686 (type-list nil)
683 (body (cons 687 (body (cons
@@ -702,7 +706,7 @@ final clause, and matches if no other keys match.
702 "Like `typecase', but error if no case fits. 706 "Like `typecase', but error if no case fits.
703`otherwise'-clauses are not allowed. 707`otherwise'-clauses are not allowed.
704\n(fn EXPR (TYPE BODY...)...)" 708\n(fn EXPR (TYPE BODY...)...)"
705 (declare (debug typecase)) 709 (declare (indent 1) (debug typecase))
706 (list* 'typecase expr (append clauses '((ecase-error-flag))))) 710 (list* 'typecase expr (append clauses '((ecase-error-flag)))))
707 711
708 712
@@ -718,7 +722,7 @@ quoted symbol or other form; and second, NAME is lexically rather than
718dynamically scoped: Only references to it within BODY will work. These 722dynamically scoped: Only references to it within BODY will work. These
719references may appear inside macro expansions, but not inside functions 723references may appear inside macro expansions, but not inside functions
720called from BODY." 724called from BODY."
721 (declare (debug (symbolp body))) 725 (declare (indent 1) (debug (symbolp body)))
722 (if (cl-safe-expr-p (cons 'progn body)) (cons 'progn body) 726 (if (cl-safe-expr-p (cons 'progn body)) (cons 'progn body)
723 (list 'cl-block-wrapper 727 (list 'cl-block-wrapper
724 (list* 'catch (list 'quote (intern (format "--cl-block-%s--" name))) 728 (list* 'catch (list 'quote (intern (format "--cl-block-%s--" name)))
@@ -738,7 +742,7 @@ This jumps out to the innermost enclosing `(block NAME ...)' form,
738returning RESULT from that form (or nil if RESULT is omitted). 742returning RESULT from that form (or nil if RESULT is omitted).
739This is compatible with Common Lisp, but note that `defun' and 743This is compatible with Common Lisp, but note that `defun' and
740`defmacro' do not create implicit blocks as they do in Common Lisp." 744`defmacro' do not create implicit blocks as they do in Common Lisp."
741 (declare (debug (symbolp &optional form))) 745 (declare (indent 1) (debug (symbolp &optional form)))
742 (let ((name2 (intern (format "--cl-block-%s--" name)))) 746 (let ((name2 (intern (format "--cl-block-%s--" name))))
743 (list 'cl-block-throw (list 'quote name2) result))) 747 (list 'cl-block-throw (list 'quote name2) result)))
744 748
@@ -1479,7 +1483,8 @@ Valid clauses are:
1479 "The Common Lisp `do' loop. 1483 "The Common Lisp `do' loop.
1480 1484
1481\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" 1485\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
1482 (declare (debug 1486 (declare (indent 2)
1487 (debug
1483 ((&rest &or symbolp (symbolp &optional form form)) 1488 ((&rest &or symbolp (symbolp &optional form form))
1484 (form body) 1489 (form body)
1485 cl-declarations body))) 1490 cl-declarations body)))
@@ -1490,7 +1495,7 @@ Valid clauses are:
1490 "The Common Lisp `do*' loop. 1495 "The Common Lisp `do*' loop.
1491 1496
1492\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" 1497\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
1493 (declare (debug do)) 1498 (declare (indent 2) (debug do))
1494 (cl-expand-do-loop steps endtest body t)) 1499 (cl-expand-do-loop steps endtest body t))
1495 1500
1496(defun cl-expand-do-loop (steps endtest body star) 1501(defun cl-expand-do-loop (steps endtest body star)
@@ -1589,7 +1594,8 @@ Evaluate BODY with VAR bound to each interned symbol, or to each symbol
1589from OBARRAY. 1594from OBARRAY.
1590 1595
1591\(fn (VAR [OBARRAY [RESULT]]) BODY...)" 1596\(fn (VAR [OBARRAY [RESULT]]) BODY...)"
1592 (declare (debug ((symbolp &optional form form) cl-declarations body))) 1597 (declare (indent 1)
1598 (debug ((symbolp &optional form form) cl-declarations body)))
1593 ;; Apparently this doesn't have an implicit block. 1599 ;; Apparently this doesn't have an implicit block.
1594 (list 'block nil 1600 (list 'block nil
1595 (list 'let (list (car spec)) 1601 (list 'let (list (car spec))
@@ -1600,7 +1606,7 @@ from OBARRAY.
1600 1606
1601;;;###autoload 1607;;;###autoload
1602(defmacro do-all-symbols (spec &rest body) 1608(defmacro do-all-symbols (spec &rest body)
1603 (declare (debug ((symbolp &optional form) cl-declarations body))) 1609 (declare (indent 1) (debug ((symbolp &optional form) cl-declarations body)))
1604 (list* 'do-symbols (list (car spec) nil (cadr spec)) body)) 1610 (list* 'do-symbols (list (car spec) nil (cadr spec)) body))
1605 1611
1606 1612
@@ -1627,7 +1633,7 @@ Each symbol in the first list is bound to the corresponding value in the
1627second list (or made unbound if VALUES is shorter than SYMBOLS); then the 1633second list (or made unbound if VALUES is shorter than SYMBOLS); then the
1628BODY forms are executed and their result is returned. This is much like 1634BODY forms are executed and their result is returned. This is much like
1629a `let' form, except that the list of symbols can be computed at run-time." 1635a `let' form, except that the list of symbols can be computed at run-time."
1630 (declare (debug (form form body))) 1636 (declare (indent 2) (debug (form form body)))
1631 (list 'let '((cl-progv-save nil)) 1637 (list 'let '((cl-progv-save nil))
1632 (list 'unwind-protect 1638 (list 'unwind-protect
1633 (list* 'progn (list 'cl-progv-before symbols values) body) 1639 (list* 'progn (list 'cl-progv-before symbols values) body)
@@ -1643,7 +1649,7 @@ function definitions in place, then the definitions are undone (the FUNCs
1643go back to their previous definitions, or lack thereof). 1649go back to their previous definitions, or lack thereof).
1644 1650
1645\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" 1651\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
1646 (declare (debug ((&rest (defun*)) cl-declarations body))) 1652 (declare (indent 1) (debug ((&rest (defun*)) cl-declarations body)))
1647 (list* 'letf* 1653 (list* 'letf*
1648 (mapcar 1654 (mapcar
1649 (function 1655 (function
@@ -1676,7 +1682,7 @@ This is like `flet', except the bindings are lexical instead of dynamic.
1676Unlike `flet', this macro is fully compliant with the Common Lisp standard. 1682Unlike `flet', this macro is fully compliant with the Common Lisp standard.
1677 1683
1678\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" 1684\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
1679 (declare (debug flet)) 1685 (declare (indent 1) (debug flet))
1680 (let ((vars nil) (sets nil) (cl-macro-environment cl-macro-environment)) 1686 (let ((vars nil) (sets nil) (cl-macro-environment cl-macro-environment))
1681 (while bindings 1687 (while bindings
1682 ;; Use `gensym' rather than `make-symbol'. It's important that 1688 ;; Use `gensym' rather than `make-symbol'. It's important that
@@ -1701,7 +1707,8 @@ Unlike `flet', this macro is fully compliant with the Common Lisp standard.
1701This is like `flet', but for macros instead of functions. 1707This is like `flet', but for macros instead of functions.
1702 1708
1703\(fn ((NAME ARGLIST BODY...) ...) FORM...)" 1709\(fn ((NAME ARGLIST BODY...) ...) FORM...)"
1704 (declare (debug 1710 (declare (indent 1)
1711 (debug
1705 ((&rest (&define name (&rest arg) cl-declarations-or-string 1712 ((&rest (&define name (&rest arg) cl-declarations-or-string
1706 def-body)) 1713 def-body))
1707 cl-declarations body))) 1714 cl-declarations body)))
@@ -1723,7 +1730,7 @@ Within the body FORMs, references to the variable NAME will be replaced
1723by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...). 1730by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
1724 1731
1725\(fn ((NAME EXPANSION) ...) FORM...)" 1732\(fn ((NAME EXPANSION) ...) FORM...)"
1726 (declare (debug ((&rest (symbol sexp)) cl-declarations body))) 1733 (declare (indent 1) (debug ((&rest (symbol sexp)) cl-declarations body)))
1727 (if (cdr bindings) 1734 (if (cdr bindings)
1728 (list 'symbol-macrolet 1735 (list 'symbol-macrolet
1729 (list (car bindings)) (list* 'symbol-macrolet (cdr bindings) body)) 1736 (list (car bindings)) (list* 'symbol-macrolet (cdr bindings) body))
@@ -1740,7 +1747,7 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
1740The main visible difference is that lambdas inside BODY will create 1747The main visible difference is that lambdas inside BODY will create
1741lexical closures as in Common Lisp. 1748lexical closures as in Common Lisp.
1742\n(fn BINDINGS BODY)" 1749\n(fn BINDINGS BODY)"
1743 (declare (debug let)) 1750 (declare (indent 1) (debug let))
1744 (let* ((cl-closure-vars cl-closure-vars) 1751 (let* ((cl-closure-vars cl-closure-vars)
1745 (vars (mapcar (function 1752 (vars (mapcar (function
1746 (lambda (x) 1753 (lambda (x)
@@ -1793,7 +1800,7 @@ successive bindings within BINDINGS, will create lexical closures
1793as in Common Lisp. This is similar to the behavior of `let*' in 1800as in Common Lisp. This is similar to the behavior of `let*' in
1794Common Lisp. 1801Common Lisp.
1795\n(fn BINDINGS BODY)" 1802\n(fn BINDINGS BODY)"
1796 (declare (debug let)) 1803 (declare (indent 1) (debug let))
1797 (if (null bindings) (cons 'progn body) 1804 (if (null bindings) (cons 'progn body)
1798 (setq bindings (reverse bindings)) 1805 (setq bindings (reverse bindings))
1799 (while bindings 1806 (while bindings
@@ -1819,7 +1826,7 @@ simulate true multiple return values. For compatibility, (values A B C) is
1819a synonym for (list A B C). 1826a synonym for (list A B C).
1820 1827
1821\(fn (SYM...) FORM BODY)" 1828\(fn (SYM...) FORM BODY)"
1822 (declare (debug ((&rest symbolp) form body))) 1829 (declare (indent 2) (debug ((&rest symbolp) form body)))
1823 (let ((temp (make-symbol "--cl-var--")) (n -1)) 1830 (let ((temp (make-symbol "--cl-var--")) (n -1))
1824 (list* 'let* (cons (list temp form) 1831 (list* 'let* (cons (list temp form)
1825 (mapcar (function 1832 (mapcar (function
@@ -1837,7 +1844,7 @@ each of the symbols SYM in turn. This is analogous to the Common Lisp
1837values. For compatibility, (values A B C) is a synonym for (list A B C). 1844values. For compatibility, (values A B C) is a synonym for (list A B C).
1838 1845
1839\(fn (SYM...) FORM)" 1846\(fn (SYM...) FORM)"
1840 (declare (debug ((&rest symbolp) form))) 1847 (declare (indent 1) (debug ((&rest symbolp) form)))
1841 (cond ((null vars) (list 'progn form nil)) 1848 (cond ((null vars) (list 'progn form nil))
1842 ((null (cdr vars)) (list 'setq (car vars) (list 'car form))) 1849 ((null (cdr vars)) (list 'setq (car vars) (list 'car form)))
1843 (t 1850 (t
@@ -1862,7 +1869,7 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
1862 (cons 'progn body)) 1869 (cons 'progn body))
1863;;;###autoload 1870;;;###autoload
1864(defmacro the (type form) 1871(defmacro the (type form)
1865 (declare (debug (cl-type-spec form))) 1872 (declare (indent 1) (debug (cl-type-spec form)))
1866 form) 1873 form)
1867 1874
1868(defvar cl-proclaim-history t) ; for future compilers 1875(defvar cl-proclaim-history t) ; for future compilers
@@ -2444,7 +2451,7 @@ As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
2444the PLACE is not modified before executing BODY. 2451the PLACE is not modified before executing BODY.
2445 2452
2446\(fn ((PLACE VALUE) ...) BODY...)" 2453\(fn ((PLACE VALUE) ...) BODY...)"
2447 (declare (debug ((&rest (gate place &optional form)) body))) 2454 (declare (indent 1) (debug ((&rest (gate place &optional form)) body)))
2448 (if (and (not (cdr bindings)) (cdar bindings) (symbolp (caar bindings))) 2455 (if (and (not (cdr bindings)) (cdar bindings) (symbolp (caar bindings)))
2449 (list* 'let bindings body) 2456 (list* 'let bindings body)
2450 (let ((lets nil) (sets nil) 2457 (let ((lets nil) (sets nil)
@@ -2502,7 +2509,7 @@ As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
2502the PLACE is not modified before executing BODY. 2509the PLACE is not modified before executing BODY.
2503 2510
2504\(fn ((PLACE VALUE) ...) BODY...)" 2511\(fn ((PLACE VALUE) ...) BODY...)"
2505 (declare (debug letf)) 2512 (declare (indent 1) (debug letf))
2506 (if (null bindings) 2513 (if (null bindings)
2507 (cons 'progn body) 2514 (cons 'progn body)
2508 (setq bindings (reverse bindings)) 2515 (setq bindings (reverse bindings))
@@ -2517,7 +2524,7 @@ FUNC should be an unquoted function name. PLACE may be a symbol,
2517or any generalized variable allowed by `setf'. 2524or any generalized variable allowed by `setf'.
2518 2525
2519\(fn FUNC PLACE ARGS...)" 2526\(fn FUNC PLACE ARGS...)"
2520 (declare (debug (function* place &rest form))) 2527 (declare (indent 2) (debug (function* place &rest form)))
2521 (let* ((method (cl-setf-do-modify place (cons 'list args))) 2528 (let* ((method (cl-setf-do-modify place (cons 'list args)))
2522 (rargs (cons (nth 2 method) args))) 2529 (rargs (cons (nth 2 method) args)))
2523 (list 'let* (car method) 2530 (list 'let* (car method)
@@ -2532,7 +2539,7 @@ or any generalized variable allowed by `setf'.
2532Like `callf', but PLACE is the second argument of FUNC, not the first. 2539Like `callf', but PLACE is the second argument of FUNC, not the first.
2533 2540
2534\(fn FUNC ARG1 PLACE ARGS...)" 2541\(fn FUNC ARG1 PLACE ARGS...)"
2535 (declare (debug (function* form place &rest form))) 2542 (declare (indent 3) (debug (function* form place &rest form)))
2536 (if (and (cl-safe-expr-p arg1) (cl-simple-expr-p place) (symbolp func)) 2543 (if (and (cl-safe-expr-p arg1) (cl-simple-expr-p place) (symbolp func))
2537 (list 'setf place (list* func arg1 place args)) 2544 (list 'setf place (list* func arg1 place args))
2538 (let* ((method (cl-setf-do-modify place (cons 'list args))) 2545 (let* ((method (cl-setf-do-modify place (cons 'list args)))
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index c5af1d8a4f1..7c486e17dcf 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -651,42 +651,6 @@ If ALIST is non-nil, the new pairs are prepended to it."
651 651
652;;; Miscellaneous. 652;;; Miscellaneous.
653 653
654;; Define data for indentation and edebug.
655(dolist (entry
656 '(((defun* defmacro*) 2)
657 ((function*) nil
658 (&or symbolp ([&optional 'macro] 'lambda (&rest sexp) &rest form)))
659 ((eval-when) 1 (sexp &rest form))
660 ((declare) nil (&rest sexp))
661 ((the) 1 (sexp &rest form))
662 ((case ecase typecase etypecase) 1 (form &rest (sexp &rest form)))
663 ((block return-from) 1 (sexp &rest form))
664 ((return) nil (&optional form))
665 ((do do*) 2 ((&rest &or symbolp (symbolp &optional form form))
666 (form &rest form)
667 &rest form))
668 ((do-symbols) 1 ((symbolp form &optional form form) &rest form))
669 ((do-all-symbols) 1 ((symbolp form &optional form) &rest form))
670 ((psetq setf psetf) nil edebug-setq-form)
671 ((progv) 2 (&rest form))
672 ((flet labels macrolet) 1
673 ((&rest (sexp sexp &rest form)) &rest form))
674 ((symbol-macrolet lexical-let lexical-let*) 1
675 ((&rest &or symbolp (symbolp form)) &rest form))
676 ((multiple-value-bind) 2 ((&rest symbolp) &rest form))
677 ((multiple-value-setq) 1 ((&rest symbolp) &rest form))
678 ((incf decf remf pushnew shiftf rotatef) nil (&rest form))
679 ((letf letf*) 1 ((&rest (&rest form)) &rest form))
680 ((callf destructuring-bind) 2 (sexp form &rest form))
681 ((callf2) 3 (sexp form form &rest form))
682 ((loop) nil (&rest &or symbolp form))
683 ((ignore-errors) 0 (&rest form))))
684 (dolist (func (car entry))
685 (put func 'lisp-indent-function (nth 1 entry))
686 (put func 'lisp-indent-hook (nth 1 entry))
687 (or (get func 'edebug-form-spec)
688 (put func 'edebug-form-spec (nth 2 entry)))))
689
690;; Autoload the other portions of the package. 654;; Autoload the other portions of the package.
691;; We want to replace the basic versions of dolist, dotimes, declare below. 655;; We want to replace the basic versions of dolist, dotimes, declare below.
692(fmakunbound 'dolist) 656(fmakunbound 'dolist)