;;; mu-register.el --- registration feature of mu-cite
-
-;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Free Software Foundation, Inc.
;; Author: MINOURA Makoto <minoura@netlaputa.or.jp>
;; MORIOKA Tomohiko <tomo@m17n.org>
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Code:
:type 'integer
:group 'mu-cite)
-(defcustom mu-registration-file-coding-system-for-read nil
- "Coding system used when reading a registration file."
+(defcustom mu-registration-file-coding-system-for-write
+ (static-if (boundp 'MULE)
+ '*iso-2022-jp*
+ 'iso-2022-7bit)
+ "Coding-system used when writing a registration file. If you set this
+to nil, the value of `mu-registration-file-coding-system' will be used
+for writing a file."
:group 'mu-cite)
(defcustom mu-cite-allow-null-string-registration nil
- "If non-nil, null-string citation-name is registered."
+ "If non-nil, null-string citation-name can be registered."
:type 'boolean
:group 'mu-cite)
(defvar mu-registration-symbol 'mu-citation-name-alist
"*Name of the variable to register citation prefix strings.")
+(defvar mu-registration-file-coding-system-for-read nil
+ "*Coding-system used when reading a registration file. Normally, you
+have no need to set this option. If you have many friends in various
+countries and the file contains their names in various languages, you
+may avoid mis-decoding them by setting this option to `iso-2022-7bit'
+or the other universal coding-system. Note that when you change this
+value, you should save the file manually using the same coding-system
+in advance.")
+
(defvar mu-registration-file-coding-system nil
- "Coding system used when writing a current registration file.")
+ "Internal variable used to keep a default coding-system for writing
+a current registration file. The value will be renewed whenever a
+registration file is read.")
(defvar mu-register-history nil)
-(static-when (featurep 'xemacs)
- (define-obsolete-variable-alias
- 'mu-cite/registration-file 'mu-registration-file)
-
- (define-obsolete-variable-alias
- 'mu-cite/allow-null-string-registration
- 'mu-cite-allow-null-string-registration)
-
- (define-obsolete-variable-alias
- 'mu-cite/registration-symbol 'mu-registration-symbol)
- )
-
;;; @ load / save registration file
;;;
(defun mu-cite-load-registration-file ()
(if (file-readable-p mu-registration-file)
(with-temp-buffer
+ (set-buffer-multibyte t)
(if mu-registration-file-coding-system-for-read
(insert-file-contents-as-coding-system
mu-registration-file-coding-system-for-read
(defun mu-cite-save-registration-file ()
(with-temp-buffer
- (insert ";;; " (file-name-nondirectory mu-registration-file) "\n")
- (insert ";;; This file is generated automatically by mu-cite "
- mu-cite-version "\n\n")
- (insert "(setq "
- (symbol-name mu-registration-symbol)
- "\n '(")
- (insert (mapconcat
- (function prin1-to-string)
- (symbol-value mu-registration-symbol) "\n "))
- (insert "\n ))\n\n")
- (insert ";;; "
- (file-name-nondirectory mu-registration-file)
- " ends here.\n")
- (write-region-as-coding-system mu-registration-file-coding-system
- (point-min)(point-max)
- mu-registration-file nil 'nomsg)
- (condition-case nil
- (set-file-modes mu-registration-file mu-registration-file-modes)
- (error nil))))
+ (set-buffer-multibyte t)
+ (let ((name (file-name-nondirectory mu-registration-file))
+ (coding-system (or mu-registration-file-coding-system-for-write
+ mu-registration-file-coding-system)))
+ (insert (format "\
+;;; %s -*- mode: emacs-lisp; coding: %s -*-
+;; This file is generated automatically by MU-CITE v%s.
+
+"
+ name coding-system mu-cite-version))
+ (insert "(setq "
+ (symbol-name mu-registration-symbol)
+ "\n '(")
+ (insert (mapconcat
+ (function
+ (lambda (elem)
+ (format "(%s . %s)"
+ (prin1-to-string
+ (mu-cite-remove-text-properties (car elem)))
+ (prin1-to-string
+ (mu-cite-remove-text-properties (cdr elem))))))
+ (symbol-value mu-registration-symbol) "\n\t"))
+ (insert "))\n\n")
+ (insert ";;; " name " ends here\n")
+ (write-region-as-coding-system coding-system
+ (point-min) (point-max)
+ mu-registration-file nil 'nomsg)
+ (condition-case nil
+ (set-file-modes mu-registration-file mu-registration-file-modes)
+ (error nil)))))
;;; @ database accessors
(defun mu-cite-get-prefix-register-method ()
(let ((addr (mu-cite-get-value 'address)))
(or (mu-register-get-citation-name addr)
- (let ((return
- (read-string "Citation name? "
- (or (mu-cite-get-value 'x-attribution)
- (mu-cite-get-value 'full-name))
- 'mu-register-history)))
- (when (and (or mu-cite-allow-null-string-registration
- (not (string-equal return "")))
- (y-or-n-p (format "Register \"%s\"? " return)))
- (mu-register-add-citation-name return addr))
+ (let* ((minibuffer-allow-text-properties nil)
+ (return
+ (mu-cite-remove-text-properties
+ (read-string "Citation name? "
+ (or (mu-cite-get-value 'x-attribution)
+ (mu-cite-get-value 'x-cite-me)
+ (mu-cite-get-value 'full-name))
+ 'mu-register-history))))
+
+ (if (and (or mu-cite-allow-null-string-registration
+ (not (string-equal return "")))
+ (y-or-n-p (format "Register \"%s\"? " return)))
+ (mu-register-add-citation-name return addr))
return))))
;;;###autoload
(defun mu-cite-get-prefix-register-verbose-method ()
(let* ((addr (mu-cite-get-value 'address))
(return1 (mu-register-get-citation-name addr))
- (return (read-string "Citation name? "
- (or return1
- (mu-cite-get-value 'x-attribution)
- (mu-cite-get-value 'full-name))
- 'mu-register-history)))
- (when (and (or mu-cite-allow-null-string-registration
- (not (string-equal return "")))
- (not (string-equal return return1))
- (y-or-n-p (format "Register \"%s\"? " return)))
- (mu-register-add-citation-name return addr))
+ (minibuffer-allow-text-properties nil)
+ (return (mu-cite-remove-text-properties
+ (read-string "Citation name? "
+ (or return1
+ (mu-cite-get-value 'x-attribution)
+ (mu-cite-get-value 'x-cite-me)
+ (mu-cite-get-value 'full-name))
+ 'mu-register-history))))
+ (if (and (or mu-cite-allow-null-string-registration
+ (not (string-equal return "")))
+ (not (string-equal return return1))
+ (y-or-n-p (format "Register \"%s\"? " return)))
+ (mu-register-add-citation-name return addr))
return))