emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master e01d030: Fix "Allow use of Gnus search groups as no


From: Eric Abrahamsen
Subject: [Emacs-diffs] master e01d030: Fix "Allow use of Gnus search groups as notmuch path: search term"
Date: Wed, 21 Nov 2018 11:38:53 -0500 (EST)

branch: master
commit e01d030723aef2f90a2fc53a0b5251f29df94527
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>

    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)
---
 doc/misc/gnus.texi | 12 ++++++++++++
 lisp/gnus/nnir.el  | 27 +++++++++++++--------------
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index fb9113f..d1c746c 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
 to get a group name (albeit with @samp{/} instead of @samp{.}).  This
 is a regular expression.
 
address@hidden 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
address@hidden
+(lambda (g) (replace-regexp-in-string "\\." "/" g))
address@hidden example
+
 @end table
 
 
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index ea7257d..084b154 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]