]> git.eshelyaron.com Git - emacs.git/commitdiff
Further tweaks to gnus-search-query-expand-key
authorEric Abrahamsen <eric@ericabrahamsen.net>
Sun, 11 Jul 2021 16:00:33 +0000 (09:00 -0700)
committerEric Abrahamsen <eric@ericabrahamsen.net>
Sun, 11 Jul 2021 16:05:04 +0000 (09:05 -0700)
* lisp/gnus/gnus-search.el (gnus-search-query-expand-key): It's
possible that KEY could be partially completed (ie no longer string=
to COMP), but not all the way. Use a more accurate test. Add
docstring.

lisp/gnus/gnus-search.el

index 8627619e96e234c2a2d0070cfa9079a2e56c470d..39bde837b3002e1cd77e8eb13eda6853a6e43990 100644 (file)
@@ -629,12 +629,19 @@ gnus-*-mark marks, and return an appropriate string."
     mark))
 
 (defun gnus-search-query-expand-key (key)
+  "Attempt to expand KEY to a full keyword.
+Use `gnus-search-expandable-keys' as a completion table; return
+KEY directly if it can't be completed.  Raise an error if KEY is
+ambiguous, meaning that it is a prefix of multiple known
+keywords.  This means that it's not possible to enter a custom
+keyword that happens to be a prefix of a known keyword."
   (let ((comp (try-completion key gnus-search-expandable-keys)))
     (if (or (eql comp 't)              ; Already a key.
            (null comp))                ; An unknown key.
        key
-      (if (string= comp key)
-         ;; KEY matches multiple possible keys.
+      (if (null (member comp gnus-search-expandable-keys))
+         ;; KEY is a prefix of multiple known keywords, and could not
+         ;; be completed to something unique.
          (signal 'gnus-search-parse-error
                  (list (format "Ambiguous keyword: %s" key)))
        ;; We completed to a unique known key.