]> code.delx.au - gnu-emacs/blobdiff - lisp/emacs-lisp/cl-specs.el
(string-to-syntax): Mark it as pure.
[gnu-emacs] / lisp / emacs-lisp / cl-specs.el
index e90ca40798326d6ba878be25e94a28ee3c50e41f..650a341f95588f2ce3ac69de2e49b839d29c4181 100644 (file)
@@ -1,13 +1,12 @@
-;;; cl-specs.el - Edebug specs for cl.el
+;;; cl-specs.el --- Edebug specs for cl.el -*- no-byte-compile: t -*-
 
-;; Copyright (C) 1993 Free Software Foundation, Inc.
-;; Author: Daniel LaLiberte <liberte@cs.uiuc.edu>
+;; Copyright (C) 1993, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+;; Author: Daniel LaLiberte <liberte@holonexus.org>
 ;; Keywords: lisp, tools, maint
 
 ;; LCD Archive Entry:
-;; cl-specs.el|Daniel LaLiberte|liberte@cs.uiuc.edu
+;; cl-specs.el|Daniel LaLiberte|liberte@holonexus.org
 ;; |Edebug specs for cl.el
-;; |$Date: 1994/04/05 20:52:43 $|1.1|
 
 ;; This file is part of GNU Emacs.
 
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
-;;;; Commentary:
+;;; Commentary:
 
 ;; These specs are to be used with edebug.el version 3.3 or later and
 ;; cl.el version 2.03 or later, by Dave Gillespie <daveg@synaptics.com>.
 
-;; This file need not be byte-compiled, but it shouldnt hurt.
+;; This file need not be byte-compiled, but it shouldn't hurt.
+
+;;; Code:
 
 (provide 'cl-specs)
 ;; Do the above provide before the following require.
 
 ;; Loops
 
-(def-edebug-spec when t)
-(def-edebug-spec unless t)
 (def-edebug-spec case (form &rest (sexp body)))
 (def-edebug-spec ecase case)
 (def-edebug-spec do
   ((&rest &or symbolp (symbolp &optional form form))
-   (form body) 
+   (form body)
    cl-declarations body))
 (def-edebug-spec do* do)
-(def-edebug-spec dolist 
+(def-edebug-spec dolist
   ((symbolp form &optional form) cl-declarations body))
 (def-edebug-spec dotimes dolist)
 (def-edebug-spec do-symbols
   ((symbolp &optional form form) cl-declarations body))
-(def-edebug-spec do-all-symbols 
+(def-edebug-spec do-all-symbols
   ((symbolp &optional form) cl-declarations body))
 
 ;; Multiple values
 
 (def-edebug-spec multiple-value-list (form))
 (def-edebug-spec multiple-value-call (function-form body))
-(def-edebug-spec multiple-value-bind 
+(def-edebug-spec multiple-value-bind
   ((&rest symbolp) form cl-declarations body))
 (def-edebug-spec multiple-value-setq ((&rest symbolp) form))
 (def-edebug-spec multiple-value-prog1 (form body))
 (def-edebug-spec flet ((&rest (defun*)) cl-declarations body))
 (def-edebug-spec labels flet)
 
-(def-edebug-spec macrolet 
-  ((&rest (&define name (&rest arg) cl-declarations-or-string def-body)) 
+(def-edebug-spec macrolet
+  ((&rest (&define name (&rest arg) cl-declarations-or-string def-body))
    cl-declarations body))
 
-(def-edebug-spec symbol-macrolet 
+(def-edebug-spec symbol-macrolet
   ((&rest (symbol sexp)) cl-declarations body))
 
 (def-edebug-spec destructuring-bind
 (def-edebug-spec letf* letf)
 
 
-(def-edebug-spec defsetf 
-  (&define name 
+(def-edebug-spec defsetf
+  (&define name
           [&or [symbolp &optional stringp]
                [cl-lambda-list (symbolp)]]
           cl-declarations-or-string def-body))
 
-(def-edebug-spec define-setf-method 
+(def-edebug-spec define-setf-method
   (&define name cl-lambda-list cl-declarations-or-string def-body))
 
 (def-edebug-spec define-modify-macro
 
 (def-edebug-spec incf (place &optional form))
 (def-edebug-spec decf incf)
-(def-edebug-spec push (form place))
-(def-edebug-spec pushnew 
-  (form place &rest 
+(def-edebug-spec push (form place))    ; different for CL
+(def-edebug-spec pushnew
+  (form place &rest
        &or [[&or ":test" ":test-not" ":key"] function-form]
-       [edebug-keywordp form]))
-(def-edebug-spec pop (place))
+       [keywordp form]))
+(def-edebug-spec pop (place))          ; different for CL
 
 (def-edebug-spec shiftf (&rest place))  ;; really [&rest place] form
 (def-edebug-spec rotatef (&rest place))
 
 ;; Declarations
 
-(def-edebug-spec cl-decl-spec 
+(def-edebug-spec cl-decl-spec
   ((symbolp &rest sexp)))
 
 (def-edebug-spec cl-declarations
     [&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
     [&optional ["&rest" arg]]
     [&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
-               &optional "&allow-other-keywords"]]
+               &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
                &or (symbolp &optional def-form) symbolp]]
     )))
   (&or ([&or (symbolp arg) arg] &optional def-form arg) arg))
 
 ;; The lambda list for macros is different from that of normal lambdas.
-;; Note that &environment is only allowed as first or last items in the 
+;; Note that &environment is only allowed as first or last items in the
 ;; top level list.
 
 (def-edebug-spec cl-macro-list
   (([&optional "&environment" arg]
     [&rest cl-macro-arg]
-    [&optional ["&optional" &rest 
+    [&optional ["&optional" &rest
                &or (cl-macro-arg &optional def-form cl-macro-arg) arg]]
     [&optional [[&or "&rest" "&body"] cl-macro-arg]]
-    [&optional ["&key" [&rest 
-                       [&or ([&or (symbolp cl-macro-arg) arg] 
+    [&optional ["&key" [&rest
+                       [&or ([&or (symbolp cl-macro-arg) arg]
                              &optional def-form cl-macro-arg)
                             arg]]
-               &optional "&allow-other-keywords"]]
+               &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
                &or (symbolp &optional def-form) symbolp]]
     [&optional "&environment" arg]
 (def-edebug-spec cl-macro-list1
   (([&optional "&whole" arg]  ;; only allowed at lower levels
     [&rest cl-macro-arg]
-    [&optional ["&optional" &rest 
+    [&optional ["&optional" &rest
                &or (cl-macro-arg &optional def-form cl-macro-arg) arg]]
     [&optional [[&or "&rest" "&body"] cl-macro-arg]]
-    [&optional ["&key" [&rest 
-                       [&or ([&or (symbolp cl-macro-arg) arg] 
+    [&optional ["&key" [&rest
+                       [&or ([&or (symbolp cl-macro-arg) arg]
                              &optional def-form cl-macro-arg)
                             arg]]
-               &optional "&allow-other-keywords"]]
+               &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
                &or (symbolp &optional def-form) symbolp]]
     . [&or arg nil])))
           def-body))
 (def-edebug-spec defsubst* defun*)
 
-(def-edebug-spec defmacro* 
+(def-edebug-spec defmacro*
   (&define name cl-macro-list cl-declarations-or-string def-body))
 (def-edebug-spec define-compiler-macro defmacro*)
 
 (def-edebug-spec function-form
   ;; form at the end could also handle "function",
   ;; but recognize it specially to avoid wrapping function forms.
-  (&or ([&or "quote" "function"] &or symbolp lambda-expr) 
-       ("function*" cl-lambda-expr)
+  (&or ([&or "quote" "function"] &or symbolp lambda-expr)
+       ("function*" function*)
        form))
 
 ;;======================================================
   (&define  ; makes top-level form not be wrapped
    [&or symbolp
        (gate
-        symbolp &rest 
+        symbolp &rest
                 (&or [":conc-name" &or stringp "nil"]
                      [":constructor" symbolp &optional cl-lambda-list]
                      [":copier" symbolp]
 
 (def-edebug-spec loop
   ([&optional ["named" symbolp]]
-   [&rest 
+   [&rest
     &or
     ["repeat" form]
     loop-for-as
    &rest ["and" loop-for-as-subclause]))
 
 (def-edebug-spec loop-for-as-subclause
-  (loop-var 
+  (loop-var
    loop-type-spec
-   &or 
+   &or
    [[&or "in" "on" "in-ref" "across-ref"]
     form &optional ["by" function-form]]
 
    ["=" form &optional ["then" form]]
    ["across" form]
-   ["being" 
+   ["being"
     [&or "the" "each"]
-    &or 
-    [[&or "element" "elements"] 
+    &or
+    [[&or "element" "elements"]
      [&or "of" "in" "of-ref"] form
      &optional "using" ["index" symbolp]];; is this right?
     [[&or "hash-key" "hash-keys"
          "hash-value" "hash-values"]
      [&or "of" "in"]
-     hash-table-p &optional ["using" ([&or "hash-value" "hash-values" 
+     hash-table-p &optional ["using" ([&or "hash-value" "hash-values"
                                           "hash-key" "hash-keys"] sexp)]]
-                                       
+
     [[&or "symbol" "present-symbol" "external-symbol"
          "symbols" "present-symbols" "external-symbols"]
      [&or "in" "of"] package-p]
-     
+
     ;; Extensions for Emacs Lisp, including Lucid Emacs.
     [[&or "frame" "frames"
          "screen" "screens"
          "buffer" "buffers"]]
 
-    [[&or "window" "windows"] 
+    [[&or "window" "windows"]
      [&or "of" "in"] form]
 
     [[&or "overlay" "overlays"
      [&or "of" "in"] form
      &optional [[&or "from" "to"] form]]
 
-    [[&or "interval" "intervals"] 
+    [[&or "interval" "intervals"]
      [&or "in" "of"] form
      &optional [[&or "from" "to"] form]
      ["property" form]]
-     
+
     [[&or "key-code" "key-codes"
          "key-seq" "key-seqs"
-         "key-binding" "key-bindings"] 
+         "key-binding" "key-bindings"]
      [&or "in" "of"] form
      &optional ["using" ([&or "key-code" "key-codes"
                              "key-seq" "key-seqs"
-                             "key-binding" "key-bindings"] 
+                             "key-binding" "key-bindings"]
                         sexp)]]
     ;; For arbitrary extensions, recognize anything else.
     [symbolp &rest &or symbolp form]
     ]
-   
+
    ;; arithmetic - must be last since all parts are optional.
    [[&optional [[&or "from" "downfrom" "upfrom"] form]]
     [&optional [[&or "to" "downto" "upto" "below" "above"] form]]
     ]))
 
 (def-edebug-spec loop-initial-final
-  (&or ["initially" 
-       ;; [&optional &or "do" "doing"]  ;; CLtL2 doesnt allow this.
+  (&or ["initially"
+       ;; [&optional &or "do" "doing"]  ;; CLtL2 doesn't allow this.
        &rest loop-non-atomic-expr]
-       ["finally" &or 
+       ["finally" &or
        [[&optional &or "do" "doing"] &rest loop-non-atomic-expr]
        ["return" form]]))
 
 (def-edebug-spec loop-clause
   (&or
    [[&or "while" "until" "always" "never" "thereis"] form]
-     
+
    [[&or "collect" "collecting"
         "append" "appending"
         "nconc" "nconcing"
-        "concat" "vconcat"] form 
+        "concat" "vconcat"] form
         [&optional ["into" loop-var]]]
 
    [[&or "count" "counting"
 
 (def-edebug-spec loop-var
   ;; The symbolp must be last alternative to recognize e.g. (a b . c)
-  ;; loop-var => 
+  ;; loop-var =>
   ;; (loop-var . [&or nil loop-var])
   ;; (symbolp . [&or nil loop-var])
   ;; (symbolp . loop-var)
 (def-edebug-spec loop-d-type-spec
   (&or (loop-d-type-spec . [&or nil loop-d-type-spec]) cl-type-spec))
 
+;;; arch-tag: b29aa3c2-cf67-4af8-9ee1-318fea61b478
+;;; cl-specs.el ends here