From 514f0cbac33d199216d96749497914f5954b720e Mon Sep 17 00:00:00 2001 From: Andrew G Cohen Date: Tue, 25 Apr 2017 09:55:36 +0800 Subject: [PATCH] Temporary function to ease search group creation * lisp/gnus/nnselect.el (gnus-group-make-permanent-search-group): (gnus-group-make-search-group): Allow permanent group creation. * lisp/gnus/gnus-group.el (gnus-group-group-map): Bind it to "G g" in the group buffer. --- lisp/gnus/gnus-group.el | 3 +++ lisp/gnus/gnus-srvr.el | 1 + lisp/gnus/nnselect.el | 54 ++++++++++++++++++++++++++++------------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index c799550a54f..a7676eecfb0 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -49,6 +49,7 @@ (autoload 'gnus-cache-total-fetched-for "gnus-cache") (autoload 'gnus-group-make-search-group "nnselect") +(autoload 'gnus-group-make-permanent-search-group "nnselect") (autoload 'gnus-cloud-upload-all-data "gnus-cloud") (autoload 'gnus-cloud-download-all-data "gnus-cloud") @@ -669,6 +670,7 @@ simple manner." "f" gnus-group-make-doc-group "w" gnus-group-make-web-group "G" gnus-group-make-search-group + "g" gnus-group-make-permanent-search-group "M" gnus-group-read-ephemeral-group "r" gnus-group-rename-group "R" gnus-group-make-rss-group @@ -915,6 +917,7 @@ simple manner." ["Make a doc group..." gnus-group-make-doc-group t] ["Make a web group..." gnus-group-make-web-group t] ["Make a search group..." gnus-group-make-search-group t] + ["Make a permanent search group..." gnus-group-make-permanent-search-group t] ["Make a virtual group..." gnus-group-make-empty-virtual t] ["Add a group to a virtual..." gnus-group-add-to-virtual t] ["Make an ephemeral group..." gnus-group-read-ephemeral-group t] diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el index 05f9f74547b..617db40c7ec 100644 --- a/lisp/gnus/gnus-srvr.el +++ b/lisp/gnus/gnus-srvr.el @@ -35,6 +35,7 @@ (require 'gnus-cloud) (autoload 'gnus-group-make-search-group "nnselect") +(autoload 'gnus-group-make-permanent-search-group "nnselect") (defcustom gnus-server-exit-hook nil "Hook run when exiting the server buffer." diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el index 89255ee7b19..095597a3243 100644 --- a/lisp/gnus/nnselect.el +++ b/lisp/gnus/nnselect.el @@ -71,7 +71,7 @@ (defvar gnus-inhibit-demon) (defvar gnus-message-group-art) -;; (defvoo nnselect-artlist nil +;; (defvar nnselect-artlist nil ;; "Internal: stores the list of articles.") @@ -721,7 +721,14 @@ originating groups." (declare-function nnir-read-parms "nnir" (search-engine)) (declare-function nnir-server-to-search-engine "nnir" (server)) -(defun gnus-group-make-search-group (nnir-extra-parms &optional specs) + +;; Temporary to make group creation easier + +(defun gnus-group-make-permanent-search-group (nnir-extra-parms &optional specs) + (interactive "P") + (gnus-group-make-search-group nnir-extra-parms specs t)) + +(defun gnus-group-make-search-group (nnir-extra-parms &optional specs perm) "Create an nnselect group based on a search. Prompt for a search query and determine the groups to search as follows: if called from the *Server* buffer search all groups belonging to @@ -753,21 +760,34 @@ non-nil `specs' arg must be an alist with `nnir-query-spec' and (lambda (x) (nnir-read-parms (nnir-server-to-search-engine (car x)))) group-spec)))))) - (gnus-group-read-ephemeral-group - (concat "nnselect-" (message-unique-id)) - (list 'nnselect "nnselect") - nil - (cons (current-buffer) gnus-current-window-configuration) -; nil - nil nil - (list - (cons 'nnselect-specs - (list - (cons 'nnselect-function 'nnir-run-query) - (cons 'nnselect-args - (list (cons 'nnir-query-spec query-spec) - (cons 'nnir-group-spec group-spec))))) - (cons 'nnselect-artlist nil))))) + (if perm + (let ((name (read-string "Group name: " nil))) + (gnus-group-make-group + name + (list 'nnselect "nnselect") + nil + (list + (cons 'nnselect-specs + (list + (cons 'nnselect-function 'nnir-run-query) + (cons 'nnselect-args + (list (cons 'nnir-query-spec query-spec) + (cons 'nnir-group-spec group-spec)))))))) + (gnus-group-read-ephemeral-group + (concat "nnselect-" (message-unique-id)) + (list 'nnselect "nnselect") + nil + (cons (current-buffer) gnus-current-window-configuration) + ; nil + nil nil + (list + (cons 'nnselect-specs + (list + (cons 'nnselect-function 'nnir-run-query) + (cons 'nnselect-args + (list (cons 'nnir-query-spec query-spec) + (cons 'nnir-group-spec group-spec))))) + (cons 'nnselect-artlist nil)))))) ;; The end. -- 2.39.5