Subject: Re: bug#40596: 28.0.50; Function with more than one key gives "wrong number of arguments" error

From: Jean Louis <[email-masked]>
Date: Mon, 13 Apr 2020 16:02:30 +0300

* Eli Zaretskii <[email-masked]> [2020-04-13 15:31]:
> > From: Jean Louis <[email-masked]>
> > Date: Mon, 13 Apr 2020 14:19:10 +0300
> > 
> > Here is something that could be a bug, I cannot know at this moment, as
> > I am researching yet if I can use &key with Emacs's `defun':
> > 
> > (defun tmp-function-1 (text html &key one)
> >   "This one works fine"
> >   (message one))
> > 
> > (tmp-function-1 "text" "<html>" :one "Hello")
> > 
> > (defun tmp-function-2 (text html &key one two)
> >   "This one does not work, wrong number of arguments"
> >   (message one))
> > 
> > (tmp-function-1 "text" "<html>" :one "Hello" :two "But not alright")
> > 
> > Evaluating the last function does not work, it gives the error:
> 
> You need to use cl-defun, not defun.  The latter doesn't support &key.

I understand and not that I need it. Then if the Emacs Lisp `defun'
does not support &key, why is then this below working?

(defun tmp-function-1 (text html &key one)
  "This one works fine"
  (message one))

(tmp-function-1 "text" "<html>" :one "Hello")

It should not work, if Emacs Lisp does not support &key

Isn't it?

Jean