[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/gnorb cc208a0 010/449: gnorb-bbdb.el: (gnorb-bbdb-mail-
From: |
Stefan Monnier |
Subject: |
[elpa] externals/gnorb cc208a0 010/449: gnorb-bbdb.el: (gnorb-bbdb-mail-search) |
Date: |
Fri, 27 Nov 2020 23:14:58 -0500 (EST) |
branch: externals/gnorb
commit cc208a026a1e62dd330bdd0c73154a2fdd03e425
Author: Eric Abrahamsen <eric@ericabrahamsen.net>
Commit: Eric Abrahamsen <eric@ericabrahamsen.net>
gnorb-bbdb.el: (gnorb-bbdb-mail-search)
Better implementation of gnorb-bbdb-mail-search, supported search
backends include notmuch, namazu, and mairix.
---
lisp/gnorb-bbdb.el | 68 ++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 53 insertions(+), 15 deletions(-)
diff --git a/lisp/gnorb-bbdb.el b/lisp/gnorb-bbdb.el
index 25d9109..e23dd38 100644
--- a/lisp/gnorb-bbdb.el
+++ b/lisp/gnorb-bbdb.el
@@ -66,34 +66,72 @@ records. If you want both, use \"C-u\" before the \"*\"."
(org-tags-view nil tag-string))
(error "No org-tags field present"))))
+(defcustom gnorb-bbdb-mail-search-backends
+ '((notmuch (lambda (terms)
+ (mapconcat
+ (lambda (m)
+ (replace-regexp-in-string "\\." "\\\\." m))
+ terms " OR "))
+ notmuch-search)
+ (mairix (lambda (terms)
+ (mapconcat 'identity
+ terms ","))
+ mairix-search)
+ (namazu (lambda (terms)
+ (mapconcat 'identity
+ terms " or "))
+ namazu-search))
+ "Various backends for mail search.
+
+An alist of backends, where each element consists of three parts:
+the symbol name of the backend, a lambda form which receives a
+list of email addresses and returns a properly-formatted search
+string, and the symbol name of the function used to initiate the
+search."
+ :group 'gnorb-bbdb
+ :type 'list)
+
+(defcustom gnorb-bbdb-mail-search-backend nil
+ "Mail search backend currently in use."
+ :group 'gnorb-bbdb
+ :type 'symbol)
(defun gnorb-bbdb-mail-search (records)
- "Initiate a mail search from the BBDB buffer. Use the prefix
-arg to edit the search string first."
- ;; Currently only notmuch implemented, do the same for mairix,
- ;; namazu, etc.
+ "Initiate a mail search from the BBDB buffer.
+
+Use the prefix arg to edit the search string first, and the \"*\"
+prefix to search mails from all visible contacts. When using both
+a prefix arg and \"*\", the prefix arg must come first."
(interactive (list (bbdb-do-records)))
(unless (and (eq major-mode 'bbdb-mode)
(equal (buffer-name) bbdb-buffer-name))
(error "Only works in the BBDB buffer"))
(setq records (bbdb-record-list records))
- (let* ((mails (cl-mapcan 'bbdb-record-mail records))
- (search-string
- (mapconcat
- (lambda (m)
- (replace-regexp-in-string "\\." "\\\\." m))
- mails " OR ")))
- (require 'notmuch)
+ (let* ((backend (or (assoc gnorb-bbdb-mail-search-backend
+ gnorb-bbdb-mail-search-backends)
+ (error "No search backend specified")))
+ (search-string
+ (funcall (second backend)
+ (cl-mapcan 'bbdb-record-mail records))))
(when (equal current-prefix-arg '(4))
- (setq search-string
- (read-from-minibuffer "Search string: " search-string)))
- (notmuch-search search-string)
+ (setq search-string
+ (read-from-minibuffer
+ (format "%s search string: " (first backend)) search-string)))
+ (funcall (third backend) search-string)
(delete-other-windows)))
+(defun gnorb-bbdb-cite-contact (rec)
+ (interactive (list (gnorb-prompt-for-bbdb-record)))
+ (let ((mail-string (bbdb-dwim-mail rec)))
+ (if (called-interactively-p)
+ (insert mail-string)
+ mail-string)))
+
;; (eval-after-load "gnorb-bbdb"
;; '(progn
;; (define-key bbdb-mode-map (kbd "O") 'gnorb-bbdb-tag-agenda)
-;; (define-key bbdb-mode-map (kbd "S") 'gnorb-bbdb-mail-search)))
+;; (define-key bbdb-mode-map (kbd "S") 'gnorb-bbdb-mail-search)
+;; (global-set-key (kbd "C-c C") 'gnorb-bbdb-cite-contact)))
- [elpa] branch externals/gnorb created (now 5f9611b), Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 88f6bda 002/449: README.md: Basic project description, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb afd587b 003/449: Basic project structure., Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 82c06bc 001/449: Initial commit, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb ba4ec1b 004/449: Add customization skeleton., Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 1b037b7 006/449: gnorb-utils.el: Common utility file., Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb d090df9 007/449: gnorb-bbdb.el: New function gnorb-bbdb-mail-search, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb cc208a0 010/449: gnorb-bbdb.el: (gnorb-bbdb-mail-search),
Stefan Monnier <=
- [elpa] externals/gnorb 869940a 015/449: README.org: Change file format to Org mode, expand docs, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 3429f3b 009/449: gnorb-org.el: (gnorb-org-contact-link), Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb b7dce0b 016/449: gnorb-utils.el: Require the cl library., Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb d79617f 019/449: gnorb-org.el: Email current subtree as exported text or file, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 27d08ef 022/449: README.org: Reorganize README, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 3edf1c9 025/449: gnorb-utils.el: gnorb-prompt-for-bbdb-record, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 32ecc09 026/449: gnorb-org.el: gnorb-org-handle-mail, gnorb-org-email-subtree, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 123b521 031/449: gnorb-org.el: bugfix gnorb-org-restore-after-send, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb a9c7410 032/449: gnorb-gnus.el: bugfix gnorb-gnus-attach-part, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 5adcc84 008/449: gnorb-utils: (gnorb-prompt-for-bbdb-record), Stefan Monnier, 2020/11/27