2 ;;; mu-register.el --- `register' function for mu-cite.
4 ;;; Copyright (C) 1995 MINOURA Makoto
6 ;;; Author: MINOURA Makoto <minoura@leo.bekkoame.or.jp>
7 ;;; modified by MORIOKA Tomohiko <morioka@jaist.ac.jp>
8 ;;; Created: 1995/12/27 by MINOURA Makoto <minoura@leo.bekkoame.or.jp>
10 ;;; $Id: mu-register.el,v 1.11 1996-01-16 21:54:27 morioka Exp $
12 ;;; This file is part of tl (Tiny Library).
14 ;;; This program is free software; you can redistribute it and/or
15 ;;; modify it under the terms of the GNU General Public License as
16 ;;; published by the Free Software Foundation; either version 2, or
17 ;;; (at your option) any later version.
19 ;;; This program is distributed in the hope that it will be useful,
20 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 ;;; General Public License for more details.
24 ;;; You should have received a copy of the GNU General Public License
25 ;;; along with This program. If not, write to the Free Software
26 ;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
31 ;;; 1. bytecompile this file and copy it to the apropriate directory.
32 ;;; 2. put the following lines to your .emacs.
33 ;;; (add-hook 'mu-cite-load-hook
36 ;;; (require 'mu-register))))
37 ;;; 3. you can use the keyword `registered' in your
38 ;;; mu-cite/top-form and mu-cite/prefix-form, for example:
39 ;;; (setq mu-cite/prefix-format (list 'registered "> "))
42 ;;; Wed Dec 27 14:28:17 1995 MINOURA Makoto <minoura@leo.bekkoame.or.jp>
55 (defvar mu-register/registration-file
56 (expand-file-name "~/.mu-register")
57 "*The name of the user environment file for mu-register.")
59 (defvar mu-register/registration-symbol 'mu-register/citation-name-alist)
61 (defvar mu-register/citation-name-alist nil)
62 (load mu-register/registration-file t t t)
63 (or (eq 'mu-register/citation-name-alist mu-register/registration-symbol)
64 (setq mu-register/citation-name-alist
65 (symbol-value mu-register/registration-symbol))
67 (defvar mu-register/minibuffer-history nil)
70 ;;; @ database accessers
73 ;; get citation-name from the database
74 (defmacro mu-register/get-citation-name (from)
75 (` (cdr (assoc (, from) mu-register/citation-name-alist))))
77 ;; register citation-name to the database
78 (defun mu-register/add-citation-name (name from)
79 (let* ((elt (assoc from mu-register/citation-name-alist)))
81 (setq mu-register/citation-name-alist
82 (delq elt mu-register/citation-name-alist)))
83 (setq elt (cons from name))
84 (setq mu-register/citation-name-alist
86 mu-register/citation-name-alist))
87 (mu-register/save-to-file)
91 (defun mu-register/save-to-file ()
92 (let* ((filename mu-register/registration-file)
93 (buffer (get-buffer-create " *mu-register*")))
96 (setq buffer-file-name filename)
98 (insert ";; generated automatically by mu-register.\n")
99 (insert (format "(setq %s
100 '(" mu-register/registration-symbol))
102 (function prin1-to-string)
103 mu-register/citation-name-alist "\n "))
106 (kill-buffer buffer)))
112 (defun mu-register/citation-name ()
114 (rfc822/address-string
115 (car (rfc822/parse-address
116 (rfc822/lexical-analyze
117 (mu-cite/get-value 'from))))))
118 (fullname (mu-cite/get-value 'full-name))
120 (mu-register/get-citation-name from))
123 (setq return1 fullname))
125 (tl:read-string "Citation name? "
127 'mu-register/minibuffer-history))
128 (if (not (string-equal return return1))
130 (cursor-in-echo-area t))
132 (message (format "Register \"%s\" (y/n)? " return))
133 (setq ans (read-event))
134 (if (not (or (eq ans ?y)
139 (mu-register/add-citation-name return from))))
142 (defun mu-register/citation-name-quietly ()
144 (rfc822/address-string
145 (car (rfc822/parse-address
146 (rfc822/lexical-analyze
147 (mu-cite/get-value 'from))))))
148 (fullname (mu-cite/get-value 'full-name))
150 (mu-register/get-citation-name from))
155 (tl:read-string "Citation name? "
157 'mu-register/minibuffer-history))
158 (if (not (string-equal return return1))
160 (cursor-in-echo-area t))
162 (message (format "Register \"%s\" (y/n)? " return))
163 (setq ans (read-event))
164 (if (not (or (eq ans ?y)
169 (mu-register/add-citation-name return from)
173 (setq return return1)
182 (set-alist 'mu-cite/default-methods-alist
184 (function mu-register/citation-name-quietly))
185 (set-alist 'mu-cite/default-methods-alist
186 'prefix-register-verbose
187 (function mu-register/citation-name))
193 (provide 'mu-register)
195 ;;; mu-register.el ends here