forked from cvs-m17n-org/MU-CITE
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mu-bbdb.el
129 lines (105 loc) · 3.87 KB
/
mu-bbdb.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
;;; mu-bbdb.el --- `attribution' function for mu-cite with BBDB.
;; Copyright (C) 1996 Shuhei KOBAYASHI
;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
;; Version: $Id: mu-bbdb.el,v 3.3 1996/12/10 11:57:23 shuhei-k Exp $
;; This file is part of tl (Tiny Library).
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2, or (at
;; your option) any later version.
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; - How to use
;; 1. bytecompile this file and copy it to the apropriate directory.
;; 2. put the following lines to your ~/.emacs:
;; (require 'tl-misc)
;; (call-after-loaded 'mu-cite
;; (function
;; (lambda ()
;; (require 'mu-bbdb)
;; )))
;;; Code:
(require 'mu-cite)
(if (module-installed-p 'bbdb)
(require 'bbdb))
(defvar mu-bbdb-load-hook nil
"*List of functions called after mu-bbdb is loaded.")
;;; @@ prefix and registration using BBDB
;;;
(defun mu-cite/get-bbdb-prefix-method ()
(or (mu-cite/get-bbdb-attr (mu-cite/get-value 'address))
">")
)
(defun mu-cite/get-bbdb-attr (addr)
"Extract attribute information from BBDB."
(let ((record (bbdb-search-simple nil addr)))
(and record
(bbdb-record-getprop record 'attribution))
))
(defun mu-cite/set-bbdb-attr (attr addr)
"Add attribute information to BBDB."
(let* ((bbdb-notice-hook nil)
(record (bbdb-annotate-message-sender
addr t
(bbdb-invoke-hook-for-value
bbdb/mail-auto-create-p)
t)))
(if record
(progn
(bbdb-record-putprop record 'attribution attr)
(bbdb-change-record record nil))
)))
(defun mu-cite/get-bbdb-prefix-register-method ()
(let ((addr (mu-cite/get-value 'address)))
(or (mu-cite/get-bbdb-attr addr)
(let ((return
(read-string "Citation name? "
(or (mu-cite/get-value 'x-attribution)
(mu-cite/get-value 'full-name))
'mu-cite/minibuffer-history)
))
(if (and (not (string-equal return ""))
(y-or-n-p (format "Register \"%s\"? " return)))
(mu-cite/set-bbdb-attr return addr)
)
return))))
(defun mu-cite/get-bbdb-prefix-register-verbose-method ()
(let* ((addr (mu-cite/get-value 'address))
(attr (mu-cite/get-bbdb-attr addr))
(return (read-string "Citation name? "
(or attr
(mu-cite/get-value 'x-attribution)
(mu-cite/get-value 'full-name))
'mu-cite/minibuffer-history))
)
(if (and (not (string-equal return ""))
(not (string-equal return attr))
(y-or-n-p (format "Register \"%s\"? " return))
)
(mu-cite/set-bbdb-attr return addr)
)
return))
(or (assoc 'bbdb-prefix mu-cite/default-methods-alist)
(setq mu-cite/default-methods-alist
(append mu-cite/default-methods-alist
(list
(cons 'bbdb-prefix
(function mu-cite/get-bbdb-prefix-method))
(cons 'bbdb-prefix-register
(function mu-cite/get-bbdb-prefix-register-method))
(cons 'bbdb-prefix-register-verbose
(function
mu-cite/get-bbdb-prefix-register-verbose-method))
))))
;;; @ end
;;;
(provide 'mu-bbdb)
(run-hooks 'mu-bbdb-load-hook)
;;; mu-bbdb.el ends here