X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/7ed39e9d2b3c283515f0d33a621051d9f3b2338f..997011eb62f97c6f66d822682c7375e213ed6a2c:/lisp/emacs-lisp/cl-specs.el diff --git a/lisp/emacs-lisp/cl-specs.el b/lisp/emacs-lisp/cl-specs.el index c2fe592537..97c7d67ac5 100644 --- a/lisp/emacs-lisp/cl-specs.el +++ b/lisp/emacs-lisp/cl-specs.el @@ -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 +;; Copyright (C) 1993, 2003 Free Software Foundation, Inc. +;; Author: Daniel LaLiberte ;; 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/02/21 21:26:33 $|$Revision: 1.1 $|~/modes/cl-specs.el| ;; This file is part of GNU Emacs. @@ -22,15 +21,18 @@ ;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, 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 . -;; 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. @@ -46,28 +48,26 @@ ;; 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)) @@ -83,11 +83,11 @@ (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 @@ -104,13 +104,13 @@ (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 @@ -126,12 +126,12 @@ (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] [keywordp form])) -(def-edebug-spec pop (place)) +(def-edebug-spec pop (place)) ; different for CL (def-edebug-spec shiftf (&rest place)) ;; really [&rest place] form (def-edebug-spec rotatef (&rest place)) @@ -179,7 +179,7 @@ ;; Declarations -(def-edebug-spec cl-decl-spec +(def-edebug-spec cl-decl-spec ((symbolp &rest sexp))) (def-edebug-spec cl-declarations @@ -201,7 +201,7 @@ [&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]] ))) @@ -213,20 +213,20 @@ (&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] @@ -238,14 +238,14 @@ (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]))) @@ -261,7 +261,7 @@ 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*) @@ -279,8 +279,8 @@ (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)) ;;====================================================== @@ -292,7 +292,7 @@ (&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] @@ -328,7 +328,7 @@ (def-edebug-spec loop ([&optional ["named" symbolp]] - [&rest + [&rest &or ["repeat" form] loop-for-as @@ -350,36 +350,36 @@ &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" @@ -387,23 +387,23 @@ [&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]] @@ -411,10 +411,10 @@ ])) (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]])) @@ -424,11 +424,11 @@ (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" @@ -454,7 +454,7 @@ (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) @@ -469,3 +469,5 @@ (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