Package: emacs;
Reported by: Björn Bidar <bjorn.bidar <at> thaodan.de>
Date: Thu, 2 Jan 2025 23:37:02 UTC
Severity: wishlist
Found in version 31.0.50
View this message in rfc822 format
From: Eli Zaretskii <eliz <at> gnu.org> To: eric <at> ericabrahamsen.net, cohen <at> andy.bu.edu Cc: bjorn.bidar <at> thaodan.de, 75305 <at> debbugs.gnu.org Subject: bug#75305: 31.0.50; gnus-refer-thread-use-search isn't exact enough about how the current group is searched Date: Sat, 01 Feb 2025 13:53:42 +0200
Ping! Ping! Andrew and Eric, any comments on the patch? > Cc: eric <at> ericabrahamsen.net, 75305 <at> debbugs.gnu.org, cohen <at> andy.bu.edu > Date: Sat, 18 Jan 2025 11:34:55 +0200 > From: Eli Zaretskii <eliz <at> gnu.org> > > Ping! Andrew and Eric, would you please review the proposed patch? > > > From: Björn Bidar <bjorn.bidar <at> thaodan.de> > > Cc: Andrew G Cohen <cohen <at> andy.bu.edu>, Eric Abrahamsen > > <eric <at> ericabrahamsen.net>, 75305 <at> debbugs.gnu.org > > Date: Sun, 05 Jan 2025 22:36:13 +0200 > > > > > > I forgot to attach the update patch, see below: > > > > >From 8cd116f25411575fb8ad59e08ba1cde8f7d7ae12 Mon Sep 17 00:00:00 2001 > > From: =?UTF-8?q?Bj=C3=B6rn=20Bidar?= <bjorn.bidar <at> thaodan.de> > > Date: Fri, 3 Jan 2025 04:09:55 +0200 > > Subject: [PATCH] Refactor gnus-refer-thread-use-search > > > > * lisp/gnus/gnus-sum.el (gnus-refer-thread-use-search): > > Make it easier to customize the variable by adding predefine choices > > as well as descriptions to each choice. Add option to add the value > > `current' to the list of servers and groups to add the current group. > > E.g. to add another group and the current group. > > * lisp/gnus/gnus-search.el > > (gnus-refer-thread-maybe-add-current-group, gnus-search-thread): > > Add helper function to determine if the option contains > > the value current. Use helper function. > > * lisp/gnus/nnselect.el (nnselect-request-thread): Use helper > > function to check if the value current is in > > gnus-refer-thread-use-search. > > * doc/misc/gnus.texi (gnus-refer-thread-use-search): > > Include the current value in the section. Format the section > > a little better to have a paragraph for each possible value that > > the option may contain. Explain the option to have > > a list of servers more detailed , i.e. similarly to the custom > > description. Highlight that the current group is not searched > > unless specified. Explain that unless the articles of that > > thread are contained in the searched groups not adding > > the current group might not be the desired effect. > > --- > > doc/misc/gnus.texi | 23 +++++++++++++++++------ > > lisp/gnus/gnus-search.el | 25 ++++++++++++++++++++++--- > > lisp/gnus/gnus-sum.el | 17 +++++++++++++---- > > lisp/gnus/nnselect.el | 4 ++-- > > 4 files changed, 54 insertions(+), 15 deletions(-) > > > > diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi > > index 200b68d2059..2e9959aeaf0 100644 > > --- a/doc/misc/gnus.texi > > +++ b/doc/misc/gnus.texi > > @@ -10557,12 +10557,23 @@ Finding the Parent > > course, it'll make group entry somewhat slow. > > > > @vindex gnus-refer-thread-use-search > > -If @code{gnus-refer-thread-use-search} is @code{nil} (the default) > > -then thread-referral only looks for articles in the current group. If > > -this variable is @code{t} the server to which the current group > > -belongs is searched (provided that searching is available for the > > -server's backend). If this variable is a list of servers, each server > > -in the list is searched. > > +If @code{gnus-refer-thread-use-search} is @code{current} or @code{nil} > > +(the default), then thread-referral only looks for articles > > +in the current group. > > + > > +If this variable is @code{t}, the server to which the current group > > +belongs is searched. Note this is only possible provided that > > +searching is available for the server's backend. > > + > > +The value can also be a list of the form > > +@code{(@var{server} @var{group}@dots{})}, where @var{server} is the > > +server and @var{group}s are the groups belonging to the server. > > + > > +To search in the current group in addition to other groups, > > +the list of servers may contain the symbol @code{current}. > > +If @code{current} is not in the list, the current group is not searched. > > +Note this may be not the desired effect if any of articles referred in > > +the thread are not contained in any of the searched groups. > > > > @vindex gnus-refer-thread-limit > > The @code{gnus-refer-thread-limit} variable says how many old (i.e., > > diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el > > index 12af8dcdfa7..959984c2ca4 100644 > > --- a/lisp/gnus/gnus-search.el > > +++ b/lisp/gnus/gnus-search.el > > @@ -2206,6 +2206,24 @@ gnus-search-server-to-engine > > > > (declare-function gnus-registry-get-id-key "gnus-registry" (id key)) > > > > +(defun gnus-refer-thread-maybe-add-current-group (group) > > + "Return `gnus-refer-thread-use-search' with `current' replaced by GROUP. > > +Return nil if `current' was not found or if was not a list." > > + (cond ((eq 'current gnus-refer-thread-use-search) > > + (list (gnus-info-method (gnus-get-info group)) > > + group)) > > + ((listp gnus-refer-thread-use-search) > > + (let (out) > > + (dolist (search gnus-refer-thread-use-search) > > + (push (if (and (not (listp search)) (eq 'current search)) > > + (list (gnus-info-method (gnus-get-info group)) > > + group) > > + search) > > + out)) > > + out)) > > + (t > > + nil))) > > + > > (defun gnus-search-thread (header &optional group server) > > "Find articles in the thread containing HEADER from GROUP on SERVER. > > If `gnus-refer-thread-use-search' is nil only the current group is > > @@ -2227,7 +2245,8 @@ gnus-search-thread > > " or ")) > > (cons 'thread t))) > > (gnus-search-use-parsed-queries t)) > > - (if (not gnus-refer-thread-use-search) > > + (if (or (not gnus-refer-thread-use-search) > > + (eq 'current gnus-refer-thread-use-search)) > > ;; Search only the current group and send the headers back to > > ;; the caller to add to the summary buffer. > > (gnus-fetch-headers > > @@ -2247,8 +2266,8 @@ gnus-search-thread > > (thread (gnus-search-run-query > > (list (cons 'search-query-spec query) > > (cons 'search-group-spec > > - (if (listp gnus-refer-thread-use-search) > > - gnus-refer-thread-use-search > > + (or (gnus-refer-thread-maybe-add-current-group > > + group) > > (list (list server)))))))) > > (if (< (nnselect-artlist-length thread) 2) > > (message "No other articles in thread") > > diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el > > index a9caa83b15c..107e52ab8ef 100644 > > --- a/lisp/gnus/gnus-sum.el > > +++ b/lisp/gnus/gnus-sum.el > > @@ -149,11 +149,20 @@ gnus-refer-thread-use-search > > list of servers and groups (where each element is a list whose > > car is the server and whose cdr is a list of groups on this > > server or nil to search the entire server) searches these > > -server/groups. This may usefully be set as a group parameter." > > - :version "28.1" > > +server/groups. > > + > > +The list of of server and groups may contain > > +the symbol `current' to refer to the current group. > > +For example, to search in the current group in addition to other groups. > > + > > +This may usefully be set as a group parameter." > > + :version "31.1" > > :group 'gnus-thread > > - :type '(restricted-sexp :match-alternatives > > - (listp 't 'nil))) > > + :type '(choice (const :tag "Current group" nil) > > + (const :tag "All groups" t) > > + (repeat :tag "Server and groups" > > + (choice (const :tag "Current Group" current) > > + (repeat :tag "Server and groups" string))))) > > > > (defcustom gnus-refer-thread-limit-to-thread nil > > "If non-nil referring a thread will limit the summary buffer to > > diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el > > index c6a1c0a9342..9d55ac27b98 100644 > > --- a/lisp/gnus/nnselect.el > > +++ b/lisp/gnus/nnselect.el > > @@ -49,6 +49,7 @@ > > (require 'gnus-art) > > (autoload 'gnus-search-run-query "gnus-search") > > (autoload 'gnus-search-server-to-engine "gnus-search") > > +(autoload 'gnus-refer-thread-maybe-add-current-group "gnus-search") > > > > (eval-when-compile (require 'cl-lib)) > > > > @@ -707,8 +708,7 @@ nnselect-request-thread > > (group-spec > > (if (not gnus-refer-thread-use-search) > > (list (list server artgroup)) > > - (if (listp gnus-refer-thread-use-search) > > - gnus-refer-thread-use-search > > + (or (gnus-refer-thread-maybe-add-current-group group) > > (list (list server))))) > > (ids (cons (mail-header-id header) > > (split-string > > -- > > 2.45.2 > > > > > >
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.