]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix `M-X TAB' completion for commands marked for multiple modes
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 27 Aug 2021 15:27:52 +0000 (17:27 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 27 Aug 2021 15:27:52 +0000 (17:27 +0200)
* lisp/simple.el (command-completion-using-modes-p): Fix
completion over commands that are defined for multiple modes
(bug#50228).

lisp/simple.el

index db083cfc25d707e0d6930eaffa18eba152ff9f15..d6c448b36a536fccda8d13748969011aa08c4ba9 100644 (file)
@@ -2070,7 +2070,7 @@ This function uses the `read-extended-command-predicate' user option."
   "Say whether SYMBOL has been marked as a mode-specific command in BUFFER."
   ;; Check the modes.
   (let ((modes (command-modes symbol)))
-    ;; Common case: Just a single mode.
+    ;; Common fast case: Just a single mode.
     (if (null (cdr modes))
         (or (provided-mode-derived-p
              (buffer-local-value 'major-mode buffer) (car modes))
@@ -2078,13 +2078,7 @@ This function uses the `read-extended-command-predicate' user option."
                   (buffer-local-value 'local-minor-modes buffer))
             (memq (car modes) global-minor-modes))
       ;; Uncommon case: Multiple modes.
-      (apply #'provided-mode-derived-p
-             (buffer-local-value 'major-mode buffer)
-             modes)
-      (seq-intersection modes
-                        (buffer-local-value 'local-minor-modes buffer)
-                        #'eq)
-      (seq-intersection modes global-minor-modes #'eq))))
+      (command-completion-with-modes-p modes buffer))))
 
 (defun command-completion-default-include-p (symbol buffer)
   "Say whether SYMBOL should be offered as a completion.