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. Is this a bug or am I misunderstanding how this works? Thanks, Alex