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.
10 LSDB works under following environment at least:
13 - XEmacs 21.4 or later
15 You will also need the following libraries:
18 ftp://ftp.m17n.org/pub/mule/apel/
20 ftp://ftp.m17n.org/pub/mule/flim/
24 .. (a) run in expanded place
26 If you don't want to install other directories, please do only
31 You can specify the emacs command name, for example
33 % make install EMACS=xemacs
35 If `EMACS=...' is omitted, EMACS=emacs is used.
39 If you want to install other directories, please do following:
43 .. (c) install as a XEmacs package
45 If you want to install to XEmacs package directory, please do
48 % make install-package
50 .* MUA Specific Installation
52 There are the convenient ways to get the LSDB functions insinuate into
53 some particular MUA. Only Semi-gnus and Wanderlust are currently
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.
59 (autoload 'lsdb-gnus-insinuate "lsdb")
60 (autoload 'lsdb-gnus-insinuate-message "lsdb")
61 (add-hook 'gnus-startup-hook 'lsdb-gnus-insinuate)
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
68 ;; (define-key message-mode-map "\M-\t" 'lsdb-complete-name)))
70 (add-hook 'gnus-summary-mode-hook
72 (define-key gnus-summary-mode-map ":" 'lsdb-toggle-buffer)))
74 If you use Wanderlust, put the following lines into your ~/.wl:
77 (add-hook 'wl-draft-mode-hook
79 (define-key wl-draft-mode-map "\M-\t" 'lsdb-complete-name)))
80 (add-hook 'wl-summary-mode-hook
82 (define-key wl-summary-mode-map ":" 'lsdb-wl-toggle-buffer)))
84 If you use Mew, put the following lines into your ~/.mew:
85 (autoload 'lsdb-mew-insinuate "lsdb")
86 (add-hook 'mew-init-hook 'lsdb-mew-insinuate)
87 (add-hook 'mew-draft-mode-hook
89 (define-key mew-draft-header-map "\M-I" 'lsdb-complete-name)))
90 (add-hook 'mew-summary-mode-hook
92 (define-key mew-summary-mode-map "l" 'lsdb-toggle-buffer)))
94 If you use MU-CITE, put the following lines into your ~/.emacs:
95 (autoload 'lsdb-mu-insinuate "lsdb")
96 (eval-after-load "mu-cite"
99 If you want to use x-face-e21 instead of the LSDB's builtin X-Face
100 functions, set lsdb-insert-x-face-function as follows:
101 (setq lsdb-insert-x-face-function
103 (require 'x-face-e21)
104 (insert-image (x-face-create-image x-face :scale-factor 0.5))))
107 If you found bugs, please drop a note to the Lsdb-info Mailing List:
109 lsdb-info@lists.sourceforge.jp
112 Latest version of LSDB can be found at:
114 http://sourceforge.jp/projects/lsdb/files/
117 The API are quite simple but not written in a way that maximizes
121 . : Gathering Records
122 . , lsdb-update-records<f>
123 lsdb-update-records<f> is called from the buffer which contains raw
124 contents of MIME entity. Once it is called, it returns a list of
125 records which could be gathered from the buffer.
128 . , lsdb-display-record<f>
129 lsdb-display-record<f> takes only one record, pops up a window, and
130 displays the formatted contents of the record within the window.
131 If you want to multiple records such as search results at the same
132 time, use lsdb-display-records<f> instead.
134 .. Internal Data Model
135 . : Primary Hash Table
136 lsdb-hash-table is the variable which holds all the records in LSDB.
137 You can operate on this variable in similar fashion to CL's
138 hash-table: lsdb-puthash for puthash, lsdb-gethash to gethash,
139 lsdh-maphash to maphash are available to you. For example, you can
140 write the following expression to get the record for "Daiki Ueno":
142 (lsdb-gethash "Daiki Ueno" lsdb-hash-table)
146 ((last-modified . "2002-04-23")
147 (creation-date . "2002-04-26")
148 (net "ueno@unixuser.org")
149 (mailing-list "emacs-mime-ja")
151 (user-agent "T-gnus/6.15.6 (based on Oort Gnus v0.06) (revision 03)"))
153 . : Secondary Hash Tables
154 LSDB can also have one or more secondary hash tables. These hash
155 tables are mainly used to hint lsdb-hash-table to gather additional
156 relationship information between record name and entries. For
157 example, lsdb-address-cache is a kind of secondary hash table which
158 maintains the mapping of mail addresses to record names.
160 The variable lsdb-secondary-hash-tables holds a list where each
161 element is corresponding to the name of global variable such as
162 lsdb-address-cache. When the primary hash table is loaded or saved,
163 the secondary hash tables will be handled automatically.
165 . , Operate on Secondary Hash Tables
166 You will need to follow the manner of the LSDB hooks.
168 . ; lsdb-lookup-full-name-functions
169 List of functions to pick up the existing full-name of the sender.
170 The sender is passed to each function as the argument.
172 . ; lsdb-update-record-functions
173 List of functions called after a record is modified.
174 The modified record is passed to each function as the argument.
178 Development of LSDB uses CVS. So latest developing version is
181 . : cvs login (first time only)
183 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
185 CVS password: [CR] # NULL string
189 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout lsdb
191 If you would like to join CVS based development, please send mail to
195 with your account name and your public key for ssh. cvsroot is
196 :ext:cvs@cvs.m17n.org:/cvs/root.
198 If you cannot use ssh, please send UNIX /etc/passwd style crypted
199 password. you can commit with the cvsroot
200 :pserver:<accountname>@cvs.m17n.org:/cvs/root.
202 We hope you will join the open development.
206 Daiki Ueno <ueno@unixuser.org>
207 Hideyuki SHIRAI <shirai@meadowy.org> (support for Mew)
208 Yuuichi Teranishi <teranisi@gohome.org>
211 The following `outline-layout' local variable setting:
212 - closes all topics from the first topic to just before the third-to-last,
213 - shows the children of the third to last (config vars)
214 - and the second to last (code section),
215 - and closes the last topic (this local-variables section).
217 outline-layout: (0 : -1 -1 0)