(mu-modules-to-compile): Don't install tl-822.el.
[elisp/mu-cite.git] / mu-register.el
index e459fb6..fdbc2fe 100644 (file)
@@ -4,8 +4,12 @@
 ;;; Copyright (C) 1995 MINOURA Makoto
 ;;;
 ;;; Author: MINOURA Makoto <minoura@leo.bekkoame.or.jp>
+;;;         modified by MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;;; Created: 1995/12/27 by MINOURA Makoto <minoura@leo.bekkoame.or.jp>
+;;; Version:
+;;;    $Id: mu-register.el,v 1.12 1996-01-17 05:35:06 morioka Exp $
 ;;;
-;;; This file is not part of tm (Tools for MIME).
+;;; 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
 \f
 ;;; Code:
 
+(require 'mu-cite)
+
+
+;;; @ variables
+;;;
+
 (defvar mu-register/registration-file
   (expand-file-name "~/.mu-register")
   "*The name of the user environment file for mu-register.")
 
+(defvar mu-register/registration-symbol 'mu-register/citation-name-alist)
+
 (defvar mu-register/citation-name-alist nil)
 (load mu-register/registration-file t t t)
-
+(or (eq 'mu-register/citation-name-alist mu-register/registration-symbol)
+    (setq mu-register/citation-name-alist
+         (symbol-value mu-register/registration-symbol))
+    )
 (defvar mu-register/minibuffer-history nil)
 
 
-;;
-;; from \e$B$+$i0zMQL>$rF@$k\e(B
-(defsubst mu-register/get-citation-name (from)
-  (cdr (assoc from mu-register/citation-name-alist)))
+;;; @ database accessers
+;;;
+
+;; get citation-name from the database
+(defmacro mu-register/get-citation-name (from)
+  (` (cdr (assoc (, from) mu-register/citation-name-alist))))
 
-;;
-;; \e$B0zMQL>$rEPO?$9$k\e(B
+;; register citation-name to the database
 (defun mu-register/add-citation-name (name from)
   (let* ((elt (assoc from mu-register/citation-name-alist)))
     (if elt
     (mu-register/save-to-file)
     ))
 
-;;
-;; \e$B<B:]$K8F$S=P$5$l$k4X?t\e(B
+;; save to file
+(defun mu-register/save-to-file ()
+  (let* ((filename mu-register/registration-file)
+        (buffer (get-buffer-create " *mu-register*")))
+    (save-excursion
+      (set-buffer buffer)
+      (setq buffer-file-name filename)
+      (erase-buffer)
+      (insert ";; generated automatically by mu-register.\n")
+      (insert (format "(setq %s
+ '(" mu-register/registration-symbol))
+      (insert (mapconcat
+              (function prin1-to-string)
+              mu-register/citation-name-alist "\n   "))
+      (insert "\n   ))\n")
+      (save-buffer))
+    (kill-buffer buffer)))
+
+
+;;; @ main functions
+;;;
+
 (defun mu-register/citation-name ()
   (let* ((from
          (rfc822/address-string
     (if (null return1)
        (setq return1 fullname))
     (setq return
-         (read-string "Citation name? "
-                      return1
-                      'mu-register/minibuffer-history))
-    (if (not (string-equal return return1))
-       (let ((ans)
-             (cursor-in-echo-area t))
-         (while (null ans)
-           (message (format "Register \"%s\" (y/n)? " return))
-           (setq ans (read-event))
-           (if (not (or (eq ans ?y)
-                        (eq ans ?n)))
-               (setq ans nil)))
-         (message "")
-         (if (eq ans ?y)
-             (mu-register/add-citation-name return from))))
+         (tl:read-string "Citation name? "
+                         return1
+                         'mu-register/minibuffer-history))
+    (if (and (not (string-equal return return1))
+            (y-or-n-p (format "Register \"%s\"? " return))
+            )
+       (mu-register/add-citation-name return from)
+      )
+    return))
+
+(defun mu-register/citation-name-quietly ()
+  (let* ((from
+         (rfc822/address-string
+          (car (rfc822/parse-address
+                (rfc822/lexical-analyze
+                 (mu-cite/get-value 'from))))))
+        (fullname (mu-cite/get-value 'full-name))
+        (return1
+         (mu-register/get-citation-name from))
+        return)
+    (if (null return1)
+       (progn
+         (setq return
+               (tl:read-string "Citation name? "
+                               fullname
+                               'mu-register/minibuffer-history))
+         (if (and (not (string-equal return return1))
+                  (y-or-n-p (format "Register \"%s\"? " return))
+                  )
+             (mu-register/add-citation-name return from)
+           ))
+      (setq return return1)
+      )
     return))
 
-;;
-;; \e$B%U%!%$%k$KJ]B8\e(B
-(defun mu-register/save-to-file ()
-  (let* ((filename mu-register/registration-file)
-        (buffer (get-buffer-create " *mu-register*")))
-    (save-excursion
-      (set-buffer buffer)
-      (setq buffer-file-name filename)
-      (erase-buffer)
-      (insert ";; generated automatically by mu-register.\n")
-      (insert "(setq mu-register/citation-name-alist\n\
- (quote\n\
-  ")
-      (insert (prin1-to-string mu-register/citation-name-alist))
-      (insert "))\n")
-      (save-buffer))
-    (kill-buffer buffer)))
 \f
 
-;;
-;; Installation
+;;; @ Installation
+;;;
 
-(require 'mu-cite)
-(if (null (assoc 'registered mu-cite/default-methods-alist))
-    (setq mu-cite/default-methods-alist
-         (cons (cons 'registered (function mu-register/citation-name))
-               mu-cite/default-methods-alist)))
+(set-alist 'mu-cite/default-methods-alist
+          'prefix-register
+          (function mu-register/citation-name-quietly))
+(set-alist 'mu-cite/default-methods-alist
+          'prefix-register-verbose
+          (function mu-register/citation-name))
+
+
+;;; @ end
+;;;
 
-;;
-;; provide
 (provide 'mu-register)
 
 ;;; mu-register.el ends here