[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
scratch/gnus-search 3d333b1 2/3: Provide completion of search keys when
From: |
Eric Abrahamsen |
Subject: |
scratch/gnus-search 3d333b1 2/3: Provide completion of search keys when reading the query |
Date: |
Fri, 9 Oct 2020 01:59:28 -0400 (EDT) |
branch: scratch/gnus-search
commit 3d333b146a2f5af1e1cb5c41c79877c6fe47b89f
Author: Eric Abrahamsen <eric@ericabrahamsen.net>
Commit: Eric Abrahamsen <eric@ericabrahamsen.net>
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 cf1cb7f..bad2b90 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))))