Stefan Monnier <[EMAIL PROTECTED]> wrote on Fri, 18 Feb 2005 08:59:24 -0500: >> Is it possible to determine at run time how many parameters an elisp >> function takes? For example, I'd like to write something like:
>> (how-many-params 'null) >> and have it evaluate to 1. Or something like that. Together with >> some reasonable convention for indicating &optional and &rest >> arguments. > Why do you want to know? I'd like to fix `beginning-of-defun-raw', where it does (funcall beginning-of-defun-function). The parameter `arg' from beginning-of-defun should be passed through to b-o-d-f. We've talked about this before. Unfortunately, there is no guarantee that existing user supplied functions can accept an `arg'. I would thus replace the call with (if (>= (how-many-params beginnin-of-defun-function) 1) (funcall beginning-of-defun-function arg) (funcall beginning-of-defun-function)) > Every time this has shown up for me, what I truly wanted to know was > more like "can I call this with 4 args?", and the reason why I wanted > to know was to know whether to call it with 4 args or otherwise do > something else (e.g. call it with fewer args). Exactly. > In practice, it's simpler to just do > (condition-case nil > (fooo) > (wrong-number-of-arguments > (bar))) > It's not perfect, but I've found it to suffer from fewer problems than > other solutions. It's also faster. Good idea! Why is there not such a function in the Emacs core? It seems such an incredibly useful function, say for debuggers or code-analysers, or for the uses mentioned above. Did somebody just overlook it in the early days, perhaps? > Stefan -- Alan Mackenzie (Munich, Germany) Email: [EMAIL PROTECTED]; to decode, wherever there is a repeated letter (like "aa"), remove half of them (leaving, say, "a"). _______________________________________________ Help-gnu-emacs mailing list Help-gnu-emacs@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-emacs