]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix "Allow use of Gnus search groups as notmuch path: search term"
authorEric Abrahamsen <eric@ericabrahamsen.net>
Mon, 19 Nov 2018 18:03:16 +0000 (10:03 -0800)
committerEric Abrahamsen <eric@ericabrahamsen.net>
Wed, 21 Nov 2018 16:38:37 +0000 (08:38 -0800)
* 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
lisp/gnus/nnir.el

index fb9113f4608edd564cf1f5a84fad35959f112535..d1c746c2e56c2f972471e3063bee18aa4520dd40 100644 (file)
@@ -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
 
 
index ea7257d0c9b05e12790a9a80629791ec149f0cb3..084b154e8a1c46676cd5adea156ba68c436ee3a0 100644 (file)
@@ -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)