bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#50228: [PATCH] 'command-completion-using-modes-p' doesn't work with


From: Johannes Maier
Subject: bug#50228: [PATCH] 'command-completion-using-modes-p' doesn't work with multiple modes
Date: Fri, 27 Aug 2021 12:38:38 +0200

Hello everyone,

I'm using an up-to-date build of Emacs on NixOS and on Ubuntu (M-x
emacs-version yields "GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu,
GTK+ Version 3.24.30, cairo version 1.16.0").

I tried writing a command that would only show up in M-x TAB in certain
modes, using the new MODES argument to 'interactive', like so:

(setq read-extended-command-predicate
      #'command-completion-default-include-p)

(defun my-foo ()
  (interactive nil haskell-mode emacs-lisp-mode)
  (message "foo"))

I would have expected the command 'my-foo' to be shown in an Elisp
buffer, but hidden in fundamental-mode.  But 'my-foo' never shows up (it
works in the case where the 'interactive' call only specifies one mode,
though).

I checked the code that is called and found that
'command-completion-using-modes-p' seems to be missing an 'or' around
the predicates in the alternative case.  Digging a little deeper I found
the predicate function 'command-completion-with-modes-p' that already
seems to do what's needed for the other predicate, but with slightly
different arguments.  In particular the single-mode case seems to be
handled correctly by the code in 'command-completion-with-modes-p' as
well.

I've attached a patch that removes the duplicated checks in these two
functions and simply calls 'command-completion-with-modes-p' from
'command-completion-using-modes-p'.  Now it works for me with one or
more (major or minor) modes in 'interactive'.

I'm very much looking forward to feedback on whether that's a "good"
solution and hope I gave all the information that's needed.

(I didn't see any tests for those functions, but I'm not sure how to go
about those yet.  Could probably have look into those, too.)

Thank you,
Johannes

Attachment: command-completion-using-modes-p.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]