The code works by checking the position of &body inside the macro
    argument list, and setting the lisp-indent-function property of the
    macro name to that number.

It is clever, and adapting it to macros that are not loaded
would not be easy.

Meanwhile, the (declare (indent ...)) construct has the same problem.
It is part of the macro definition, so it won't be available unless
the macro is loaded.  For macros that aren't standardly loaded,
explicitly putting on a lisp-indent-function property was better
in that it could be available when the macro isn't.

However, we could make autoload.el, when a defmacro is autoloaded,
generate a form that puts the appropriate property onto the macro
name.  That could go in loaddefs.  It could look for a `declare' form,
and if there is none, it could then try your approach of looking for
&body.

We could also put code like this into the standard definition
of defmacro, in eval.c, for use on non-autoloaded macros.

(You made the change in the cl version of defmacro.  That version that
is not normally used.)

Want to do this?


_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to