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