Revert handling Date: field.
[elisp/lsdb.git] / README
1 -*- mode: text -*-
2 .* What's LSDB
3
4 LSDB (The Lovely Sister Database) is a rolodex-like database program
5 for SEMI based MUA.  It intends to be a lightweight replacement for
6 BBDB (The Insidious Big Brother Database).  Unfortunately, it
7 currently doesn't support the all features of BBDB.
8
9 .* Requirements
10 LSDB works under following environment at least:
11
12  * Emacs 20.7
13  * XEmacs 21.4 or later
14
15 You will also need the following libraries:
16
17  * APEL 10.2 or later
18   * ftp://ftp.m17n.org/pub/mule/apel/
19  * FLIM 1.12 or later
20   * ftp://ftp.m17n.org/pub/mule/flim/
21
22 .* Installation
23
24 .. (a) run in expanded place
25
26 If you don't want to install other directories, please do only
27 following:
28
29   % make
30
31 You can specify the emacs command name, for example
32
33   % make install EMACS=xemacs
34
35 If `EMACS=...' is omitted, EMACS=emacs is used.
36
37 .. (b) make install
38
39 If you want to install other directories, please do following:
40
41   % make install
42
43 .. (c) install as a XEmacs package
44
45 If you want to install to XEmacs package directory, please do
46 following:
47
48   % make install-package
49
50 .* MUA Specific Installation
51
52 There are the convenient ways to get the LSDB functions insinuate into
53 some particular MUA.  Only Semi-gnus and Wanderlust are currently
54 supported.
55
56 If you use Semi-gnus or its variant, put the following lines into your
57 ~/.gnus and you will get the functions in this package autoloaded.
58
59   (autoload 'lsdb-gnus-insinuate "lsdb")
60   (autoload 'lsdb-gnus-insinuate-message "lsdb")
61   (add-hook 'gnus-startup-hook 'lsdb-gnus-insinuate)
62
63   ;; If you are using T-gnus 6.15.7 or later, type M-x
64   ;; customize-variable and set message-expand-name-function to
65   ;; lsdb-complete-name, instead of adding the following lines.
66   ;; (add-hook 'message-setup-hook
67   ;;           (lambda ()
68   ;;              (define-key message-mode-map "\M-\t" 'lsdb-complete-name)))
69
70   (add-hook 'gnus-summary-mode-hook
71             (lambda ()
72               (define-key gnus-summary-mode-map ":" 'lsdb-toggle-buffer)))
73
74 If you use Wanderlust, put the following lines into your ~/.wl:
75
76   (require 'lsdb)
77   (lsdb-wl-insinuate)
78   (add-hook 'wl-draft-mode-hook
79             (lambda ()
80                (define-key wl-draft-mode-map "\M-\t" 'lsdb-complete-name)))
81   (add-hook 'wl-summary-mode-hook
82             (lambda ()
83               (define-key wl-summary-mode-map ":" 'lsdb-wl-toggle-buffer)))
84
85 If you use Mew, put the following lines into your ~/.mew:
86
87   (autoload 'lsdb-mew-insinuate "lsdb")
88   (add-hook 'mew-init-hook 'lsdb-mew-insinuate)
89   (add-hook 'mew-draft-mode-hook
90             (lambda ()
91                (define-key mew-draft-header-map "\M-I" 'lsdb-complete-name)))
92   (add-hook 'mew-summary-mode-hook
93             (lambda ()
94               (define-key mew-summary-mode-map "L" 'lsdb-toggle-buffer)))
95
96 If you use MU-CITE, put the following lines into your ~/.emacs:
97
98   (autoload 'lsdb-mu-insinuate "lsdb")
99   (eval-after-load "mu-cite"
100     '(lsdb-mu-insinuate))
101
102 If you want to use x-face-e21 instead of the LSDB's builtin X-Face
103 functions, set lsdb-insert-x-face-function as follows:
104
105   (setq lsdb-insert-x-face-function
106         (lambda (x-face)
107           (require 'x-face-e21)
108           (insert-image (x-face-create-image x-face :scale-factor 0.5))))
109
110 .* Bug Reports
111 If you found bugs, please drop a note to the Lsdb-info Mailing List:
112
113  * lsdb-info@lists.sourceforge.jp
114
115 .* File Release
116 Latest version of LSDB can be found at:
117
118  * http://sourceforge.jp/projects/lsdb/files/
119
120 .* API
121 The API are quite simple but not written in a way that maximizes
122 flexibility.
123
124 .. Record Management
125 . : Gathering Records
126 .  , lsdb-update-records<f>
127 lsdb-update-records<f> is called from the buffer which contains raw
128 contents of MIME entity.  Once it is called, it returns a list of
129 records which could be gathered from the buffer.
130
131 . : Display Records
132 .  , lsdb-display-record<f>
133 lsdb-display-record<f> takes only one record, pops up a window, and
134 displays the formatted contents of the record within the window.
135 If you want to multiple records such as search results at the same
136 time, use lsdb-display-records<f> instead.
137
138 .. Internal Data Model
139 . : Primary Hash Table
140 lsdb-hash-table is the variable which holds all the records in LSDB.
141 You can operate on this variable in similar fashion to CL's
142 hash-table: lsdb-puthash for puthash, lsdb-gethash to gethash,
143 lsdh-maphash to maphash are available to you.  For example, you can
144 write the following expression to get the record for "Daiki Ueno":
145
146   (lsdb-gethash "Daiki Ueno" lsdb-hash-table)
147   
148   =>
149   
150   ((last-modified . "2002-04-23")
151    (creation-date . "2002-04-26")
152    (net "ueno@unixuser.org")
153    (mailing-list "emacs-mime-ja")
154    (attribution . "DU")
155    (user-agent "T-gnus/6.15.6 (based on Oort Gnus v0.06) (revision 03)"))
156
157 . : Secondary Hash Tables
158 LSDB can also have one or more secondary hash tables.  These hash
159 tables are mainly used to hint lsdb-hash-table to gather additional
160 relationship information between record name and entries.  For
161 example, lsdb-address-cache is a kind of secondary hash table which
162 maintains the mapping of mail addresses to record names.
163
164 The variable lsdb-secondary-hash-tables holds a list where each
165 element is corresponding to the name of global variable such as
166 lsdb-address-cache.  When the primary hash table is loaded or saved,
167 the secondary hash tables will be handled automatically.
168
169 .  , Operate on Secondary Hash Tables
170 You will need to follow the manner of the LSDB hooks.
171
172 .   ; lsdb-lookup-full-name-functions
173 List of functions to pick up the existing full-name of the sender.
174 The sender is passed to each function as the argument.
175
176 .   ; lsdb-update-record-functions
177 List of functions called after a record is modified.
178 The modified record is passed to each function as the argument.
179
180 .* Development
181 .. CVS
182 Development of LSDB uses CVS.  So latest developing version is
183 available at CVS.
184
185 . : cvs login (first time only)
186
187   % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
188   CVS password: [CR] # NULL string
189
190 . : checkout
191
192   % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout lsdb
193
194 If you would like to join CVS based development, please send mail to
195
196   cvs@cvs.m17n.org
197
198 with your account name and your public key for ssh.  cvsroot is
199 :ext:cvs@cvs.m17n.org:/cvs/root.
200
201 If you cannot use ssh, please send UNIX /etc/passwd style crypted
202 password.  you can commit with the cvsroot
203 :pserver:<accountname>@cvs.m17n.org:/cvs/root.
204
205 We hope you will join the open development.
206  
207
208 .* Authors
209  * Daiki Ueno <ueno@unixuser.org>
210  * Hideyuki SHIRAI <shirai@meadowy.org> (support for Mew)
211  * Yuuichi Teranishi <teranisi@gohome.org>
212  * TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
213
214 .* Local emacs vars.
215 The following `allout-layout' local variable setting:
216   - closes all topics from the first topic to just before the third-to-last,
217   - shows the children of the third to last (config vars)
218   - and the second to last (code section),
219   - and closes the last topic (this local-variables section).
220 Local variables:
221 allout-layout: (0 : -1 -1 0)
222 End: