-;;; 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