From 3d333b146a2f5af1e1cb5c41c79877c6fe47b89f Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 8 Oct 2020 22:25:37 -0700 Subject: [PATCH] Provide completion of search keys when reading the query * lisp/gnus/gnus-search.el (gnus-search-minibuffer-map): Keymap for use in reading the query. (gnus-search-complete-key): Completion function bound to TAB. (gnus-search-make-specs): Use `read-from-minibuffer', with our new keymap. --- lisp/gnus/gnus-search.el | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index cf1cb7f6462..bad2b909c36 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -2233,6 +2233,25 @@ article came from is also searched." (defvar gnus-group-marked) (defvar gnus-topic-alist) +(defvar gnus-search-minibuffer-map + (let ((km (make-sparse-keymap))) + (set-keymap-parent km minibuffer-local-map) + (define-key km (kbd "SPC") #'self-insert-command) + (define-key km (kbd "TAB") #'gnus-search-complete-key) + km)) + +(defun gnus-search-complete-key () + "Complete a search key at point. +Used when reading a search query from the minibuffer." + (interactive) + (when (completion-in-region + (save-excursion + (if (re-search-backward " " (minibuffer-prompt-end) t) + (1+ (point)) + (minibuffer-prompt-end))) + (point) gnus-search-expandable-keys) + (insert ":"))) + (defun gnus-search-make-specs (arg &optional specs) (let* ((group-spec (or (cdr (assq 'search-group-spec specs)) @@ -2247,7 +2266,9 @@ article came from is also searched." (query-spec (or (cdr (assq 'search-query-spec specs)) (list (cons 'query - (read-string "Query: " nil 'gnus-search-history)) + (read-from-minibuffer + "Query: " nil gnus-search-minibuffer-map + nil 'gnus-search-history)) (cons 'no-parse arg))))) (list (cons 'search-query-spec query-spec) (cons 'search-group-spec group-spec)))) -- 2.39.5