1 ;;; bbdb-vm.el --- BBDB interface to VM -*- lexical-binding: t -*-
3 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc.
5 ;; This file is part of the Insidious Big Brother Database (aka BBDB),
7 ;; BBDB is free software: you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation, either version 3 of the License, or
10 ;; (at your option) any later version.
12 ;; BBDB is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;; GNU General Public License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with BBDB. If not, see <http://www.gnu.org/licenses/>.
21 ;;; This file contains the BBDB interface to VM.
22 ;;; See the BBDB info manual for documentation.
29 (require 'vm-autoloads
)
39 (defun bbdb/vm-header
(header)
41 (vm-select-folder-buffer)
42 (vm-get-header-contents (car vm-message-pointer
)
43 (concat header
":"))))
46 (defun bbdb-insinuate-vm ()
48 Do not call this in your init file. Use `bbdb-initialize'."
49 (define-key vm-mode-map
":" 'bbdb-mua-display-records
)
50 (define-key vm-mode-map
"`" 'bbdb-mua-display-sender
)
51 (define-key vm-mode-map
"'" 'bbdb-mua-display-recipients
)
52 (define-key vm-mode-map
";" 'bbdb-mua-edit-field-sender
)
53 ;; Do we need keybindings for more commands? Suggestions welcome.
54 ;; (define-key vm-mode-map "'" 'bbdb-mua-edit-field-recipients)
55 (define-key vm-mode-map
"/" 'bbdb
)
56 ;; `mail-mode-map' is the parent of `vm-mail-mode-map'.
57 ;; So the following is also done by `bbdb-insinuate-mail'.
58 (if (and bbdb-complete-mail
(boundp 'vm-mail-mode-map
))
59 (define-key vm-mail-mode-map
"\M-\t" 'bbdb-complete-mail
))
61 ;; Set up user field for use in `vm-summary-format'
62 ;; (1) Big solution: use whole name
63 (if bbdb-mua-summary-unify-format-letter
64 (fset (intern (concat "vm-summary-function-"
65 bbdb-mua-summary-unify-format-letter
))
66 (lambda (m) (bbdb-mua-summary-unify
67 ;; VM does not give us the original From header.
68 ;; So we have to work backwards.
69 (let ((name (vm-decode-mime-encoded-words-in-string
70 (vm-su-interesting-full-name m
)))
71 (mail (vm-su-from m
)))
72 (if (string= name mail
) mail
73 (format "\"%s\" <%s>" name mail
)))))))
75 ;; (2) Small solution: a mark for messages whos sender is in BBDB.
76 (if bbdb-mua-summary-mark-format-letter
77 (fset (intern (concat "vm-summary-function-"
78 bbdb-mua-summary-mark-format-letter
))
79 ;; VM does not give us the original From header.
80 ;; So we assume that the mail address is sufficient to identify
81 ;; the BBDB record of the sender.
82 (lambda (m) (bbdb-mua-summary-mark (vm-su-from m
))))))
86 ;;; bbdb-vm.el ends here