From: Eric Abrahamsen Date: Fri, 9 Oct 2020 05:25:37 +0000 (-0700) Subject: Provide completion of search keys when reading the query X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3d333b146a2f5af1e1cb5c41c79877c6fe47b89f;p=emacs.git 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. --- 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))))