Subject: Re: bug#33170: 27.0.50; interactive spec with cl-defgeneric/method

From: Alex Branham <[email-masked]>
Date: Sat, 27 Oct 2018 07:40:11 -0500

On Sat 27 Oct 2018 at 01:54, Eli Zaretskii <[email-masked]> wrote:

>> From: Alex Branham <[email-masked]>
>> Date: Fri, 26 Oct 2018 17:19:44 -0500
>> 
>> I'm struggling to understand how to make functions defined with
>> cl-defgeneric interactive:
>> 
>> (require 'cl-lib)
>> 
>> (cl-defgeneric my/test ()
>>   (interactive)
>>   (message "generic"))
>> 
>> If you evaluate that you can do M-x my/test, as expected. However, as
>> soon as you evaluate this:
>> 
>> (cl-defgeneric my/test (&context (major-mode emacs-lisp-mode))
>>   (interactive)
>>   (message "method"))
>> 
>> M-x my/test no longer works.
>
> '&context' is documented only as part of cl-defmethod, so why are you
> trying to use it with cl-defgeneric?

Sorry, that was a typo. The same thing happens if you use defmethod:

(require 'cl-lib)

(cl-defgeneric my/test ()
  (interactive)
  (message "generic"))

here, M-x my/test works

(cl-defmethod my/test (&context (major-mode emacs-lisp-mode))
  (interactive)
  (message "method"))

Here, M-x my/test does not work.