Commit e01d0307 authored by Eric Abrahamsen's avatar Eric Abrahamsen

Fix "Allow use of Gnus search groups as notmuch path: search term"

* lisp/gnus/nnir.el (nnir-notmuch-filter-group-names-function):
  Default to nil -- getting correct behavior requires user
  intervention too often to have this enabled by default.
* lisp/gnus/nnir.el (nnir-run-notmuch): If the user has turned this
  on, then also hardcode `gnus-group-short-name' as a filter -- things
  will never work without it. Also move leading space to before the
  opening parenthesis.
* doc/misc/gnus.texi: Document option.

(Bug#33122)
parent d15d72b2
Pipeline #109 failed with stage
in 22 minutes and 41 seconds
......@@ -21468,6 +21468,18 @@ The prefix to remove from each file name returned by notmuch in order
to get a group name (albeit with @samp{/} instead of @samp{.}). This
is a regular expression.
@item nnir-notmuch-filter-group-names-function
A function used to transform the names of groups being searched in,
for use as a ``path:'' search keyword for notmuch. If nil, the
default, ``path:'' keywords are not used. Otherwise, this should be a
callable which accepts a single group name and returns a transformed
name as notmuch expects to see it. In many mail backends, for
instance, dots in group names must be converted to forward slashes: to
achieve this, set this option to
@example
(lambda (g) (replace-regexp-in-string "\\." "/" g))
@end example
@end table
......@@ -518,18 +518,16 @@ that it is for notmuch, not Namazu."
:type '(regexp)
:group 'nnir)
(defcustom nnir-notmuch-filter-group-names-function
#'gnus-group-short-name
(defcustom nnir-notmuch-filter-group-names-function nil
"Whether and how to use Gnus group names as \"path:\" search terms.
When nil, the groups being searched in are not used as notmuch
:path search terms. It's still possible to use \"path:\" terms
manually within the search query, however.
When a function, map this function over all the group names. By
default this runs them through `gnus-group-short-name', and it is
recommended to use this transform, at least. Further
transforms (for instance, converting \".\" to \"/\") can be
added like so:
When a function, map this function over all the group names. To
use the group names unchanged, set to (lambda (g) g). Multiple
transforms (for instance, converting \".\" to \"/\") can be added
like so:
\(add-function :filter-return
nnir-notmuch-filter-group-names-function
......@@ -1541,14 +1539,15 @@ construct path: search terms (see the variable
":[0-9]+"
"^[0-9]+$"))
(groups (when nnir-notmuch-filter-group-names-function
(mapcar nnir-notmuch-filter-group-names-function
groups)))
(delq nil
(mapcar nnir-notmuch-filter-group-names-function
(mapcar #'gnus-group-short-name groups)))))
(pathquery (when groups
(concat "("
(mapconcat (lambda (g)
(format " path:%s" g))
groups " or")
")")))
(concat " ("
(mapconcat (lambda (g)
(format "path:%s" g))
groups " or")
")")))
artno dirnam filenam)
(when (equal "" qstring)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment