aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Abrahamsen2018-11-19 10:03:16 -0800
committerEric Abrahamsen2018-11-21 08:38:37 -0800
commite01d030723aef2f90a2fc53a0b5251f29df94527 (patch)
tree0a96b35f32c45951c8e1e5ce9479bab8960ce913
parentd15d72b27de3db2f7e49398c7d3da9465b774398 (diff)
downloademacs-e01d030723aef2f90a2fc53a0b5251f29df94527.tar.gz
emacs-e01d030723aef2f90a2fc53a0b5251f29df94527.zip
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)
-rw-r--r--doc/misc/gnus.texi12
-rw-r--r--lisp/gnus/nnir.el27
2 files changed, 25 insertions, 14 deletions
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index fb9113f4608..d1c746c2e56 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -21468,6 +21468,18 @@ The prefix to remove from each file name returned by notmuch in order
21468to get a group name (albeit with @samp{/} instead of @samp{.}). This 21468to get a group name (albeit with @samp{/} instead of @samp{.}). This
21469is a regular expression. 21469is a regular expression.
21470 21470
21471@item nnir-notmuch-filter-group-names-function
21472A function used to transform the names of groups being searched in,
21473for use as a ``path:'' search keyword for notmuch. If nil, the
21474default, ``path:'' keywords are not used. Otherwise, this should be a
21475callable which accepts a single group name and returns a transformed
21476name as notmuch expects to see it. In many mail backends, for
21477instance, dots in group names must be converted to forward slashes: to
21478achieve this, set this option to
21479@example
21480(lambda (g) (replace-regexp-in-string "\\." "/" g))
21481@end example
21482
21471@end table 21483@end table
21472 21484
21473 21485
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index ea7257d0c9b..084b154e8a1 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -518,18 +518,16 @@ that it is for notmuch, not Namazu."
518 :type '(regexp) 518 :type '(regexp)
519 :group 'nnir) 519 :group 'nnir)
520 520
521(defcustom nnir-notmuch-filter-group-names-function 521(defcustom nnir-notmuch-filter-group-names-function nil
522 #'gnus-group-short-name
523 "Whether and how to use Gnus group names as \"path:\" search terms. 522 "Whether and how to use Gnus group names as \"path:\" search terms.
524When nil, the groups being searched in are not used as notmuch 523When nil, the groups being searched in are not used as notmuch
525:path search terms. It's still possible to use \"path:\" terms 524:path search terms. It's still possible to use \"path:\" terms
526manually within the search query, however. 525manually within the search query, however.
527 526
528When a function, map this function over all the group names. By 527When a function, map this function over all the group names. To
529default this runs them through `gnus-group-short-name', and it is 528use the group names unchanged, set to (lambda (g) g). Multiple
530recommended to use this transform, at least. Further 529transforms (for instance, converting \".\" to \"/\") can be added
531transforms (for instance, converting \".\" to \"/\") can be 530like so:
532added like so:
533 531
534\(add-function :filter-return 532\(add-function :filter-return
535 nnir-notmuch-filter-group-names-function 533 nnir-notmuch-filter-group-names-function
@@ -1541,14 +1539,15 @@ construct path: search terms (see the variable
1541 ":[0-9]+" 1539 ":[0-9]+"
1542 "^[0-9]+$")) 1540 "^[0-9]+$"))
1543 (groups (when nnir-notmuch-filter-group-names-function 1541 (groups (when nnir-notmuch-filter-group-names-function
1544 (mapcar nnir-notmuch-filter-group-names-function 1542 (delq nil
1545 groups))) 1543 (mapcar nnir-notmuch-filter-group-names-function
1544 (mapcar #'gnus-group-short-name groups)))))
1546 (pathquery (when groups 1545 (pathquery (when groups
1547 (concat "(" 1546 (concat " ("
1548 (mapconcat (lambda (g) 1547 (mapconcat (lambda (g)
1549 (format " path:%s" g)) 1548 (format "path:%s" g))
1550 groups " or") 1549 groups " or")
1551 ")"))) 1550 ")")))
1552 artno dirnam filenam) 1551 artno dirnam filenam)
1553 1552
1554 (when (equal "" qstring) 1553 (when (equal "" qstring)