Revert.
[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 is simple and not written in a way that maximizes flexibility.
122
123 .. Record Management
124 . : Gathering Records
125 .  , lsdb-update-records<f>
126 lsdb-update-records<f> is called from the buffer which contains raw
127 contents of MIME entity.  It returns a list of records gathered from
128 the buffer.
129
130 . : Display Records
131 .  , lsdb-display-record<f>
132 lsdb-display-record<f> displays the formatted contents of the record
133 within the popup window.  If you want to display multiple records, use
134 lsdb-display-records<f> instead.
135
136 .. Internal Data Model
137 . : Primary Hash Table
138 There are two kinds of hash tables used in LSDB: a primary hash table
139 and secondary hash tables.  lsdb-hash-table is the primary hash table
140 which holds mappings for names and record objects.  You can operate on
141 LSDB hash tables in similar fashion to CL's hash-table API:
142 lsdb-puthash (for puthash), lsdb-gethash (for gethash), and
143 lsdb-maphash (for maphash) are available.
144
145 Here is an example to get the record object for "Daiki Ueno":
146
147   (lsdb-gethash "Daiki Ueno" lsdb-hash-table)
148   
149   =>
150   
151   ((last-modified . "2002-04-23")
152    (creation-date . "2002-04-26")
153    (net "ueno@unixuser.org")
154    (mailing-list "emacs-mime-ja")
155    (attribution . "DU")
156    (user-agent "T-gnus/6.15.6 (based on Oort Gnus v0.06) (revision 03)"))
157
158 . : Secondary Hash Tables
159 LSDB can also have one or more secondary hash tables.  These hash
160 tables are mainly used to define additional relationships between
161 record objects and their entries.  For example, lsdb-address-cache is
162 one of secondary hash table which maintains mappings of mail addresses
163 to record names.
164
165 The variable lsdb-secondary-hash-tables is a list of symbols for
166 _maintained_ secondary hash tables.  When the primary hash table is
167 loaded or saved, these hash tables are updated 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: