[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: debug declaration.

From: Stefan Monnier
Subject: Re: debug declaration.
Date: Fri, 25 Mar 2005 10:14:38 -0500
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (darwin)

>> Try (debug (sexp def-form def-form def-form form def-form [&optional 
>> stringp]))

> This does indeed work.  (The brackets are not necessary, are they?)

I find it good practice to always use the brackets, but you're right, it's
not necessary.

> The node "Specification List" in the lisp manual says that def-form
> can only be used after &define, however.  And when I do that, things
> seem to break.

Experience proves the doc is wrong.  What I found instead is that `form'
can't be used after &define.  I think the bug is not that things don't work
with `&define' but that edebug should burp on a spec that uses both &define
and `form' (or `body' for that matter).

>> Another option is to evaluate those arguments before you plug them in the
>> body of your major mode function, so they're only evaluated once, when
>> the major mode is defined, thus reproducing the "pre-macro" behavior.

> Considering backward compatibility, that's probably the right thing to do.

It also moves more work to macro-expansion time which is good.  But beware,
it can also break backward compatibility, because now evaluation can take
place at byte-compile time.

OTOH it's closer to what I meant by "turn it into a macro" (in the comment
that prompted you to look into this whole thing).
Ideally define-generic-mode should (just like define-derived-mode does)
generate stand-alone code which does not require generic.el.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]