* riece-options.el (riece-addons): Insinuate riece-mcat by default.
authorDaiki Ueno <ueno@unixuser.org>
Fri, 19 Jan 2007 07:09:56 +0000 (07:09 +0000)
committerDaiki Ueno <ueno@unixuser.org>
Fri, 19 Jan 2007 07:09:56 +0000 (07:09 +0000)
* riece-addon-modules.el (riece-addon-modules): Add riece-mcat.
* riece-mcat.el: Implement add-on interface.
(riece-mcat-description): New constant.
(riece-mcat-insinuate): New function.
(riece-mcat-uninstall): New function.

lisp/ChangeLog
lisp/riece-addon-modules.el
lisp/riece-mcat.el
lisp/riece-options.el

index 220859b..a8b36a4 100644 (file)
@@ -1,3 +1,12 @@
+2007-01-19  Daiki Ueno  <ueno@unixuser.org>
+
+       * riece-options.el (riece-addons): Insinuate riece-mcat by default.
+       * riece-addon-modules.el (riece-addon-modules): Add riece-mcat.
+       * riece-mcat.el: Implement add-on interface.
+       (riece-mcat-description): New constant.
+       (riece-mcat-insinuate): New function.
+       (riece-mcat-uninstall): New function.
+
 2007-01-19  Daiki Ueno  <ueno@unixuser.org>
 
        * riece-mcat.el (riece-mcat-update): New function.
index 615b006..4bd4b3a 100644 (file)
@@ -22,6 +22,7 @@
     (riece-keyword . "Detect keywords in IRC buffers.")
     (riece-log . "Save IRC logs.")
     (riece-lsdb . "Help register nicknames in LSDB rolodex program.")
+    (riece-mcat . "Translate messages.")
     (riece-menu . "Setup Riece's command menus.")
     (riece-mini . "Use Riece only on the minibuffer.")
     ;;(riece-ndcc . "DCC file sending protocol support (written in elisp.)")
index bf15b54..ad15348 100644 (file)
 
 ;;; Code:
 
-(defvar riece-mcat-alist
-  '(("Japanese" . riece-mcat-japanese)))
+(require 'pp)
 
 (defun riece-mcat (string)
-  (let ((entry (assoc current-language-environment riece-mcat-alist)))
-    (when entry
-      (require (cdr entry))
-      (or (cdr (assoc string (symbol-value (intern
-                                           (concat (symbol-name (cdr entry))
-                                                   "-alist")))))
-         string))))
+  (let ((feature (get-language-info current-language-environment
+                                   'riece-mcat-feature)))
+    (if feature
+       (progn
+         (require feature)
+         (or (cdr (assoc string
+                         (symbol-value
+                          (intern (concat (symbol-name feature) "-alist")))))
+             string))
+      string)))
 
 (defun riece-mcat-extract-from-form (form)
   (if (and form (listp form) (listp (cdr form)))
@@ -69,7 +71,8 @@
       alist)))
 
 (defun riece-mcat-update (files mcat-file mcat-alist)
-  (let (alist)
+  (let ((pp-escape-newlines t)
+       alist)
     (save-excursion
       (set-buffer (find-file-noselect mcat-file))
       (goto-char (point-min))
       (setq alist (riece-mcat-extract files (symbol-value mcat-alist)))
       (insert "(defconst " (symbol-name mcat-alist) "\n  '(")
       (while alist
-       (insert "(" (prin1-to-string (car (car alist))) " . "
-               (prin1-to-string (cdr (car alist))) ")")
+       (insert "(" (pp-to-string (car (car alist))) " . "
+               (pp-to-string (cdr (car alist))) ")")
        (if (cdr alist)
            (insert "\n    "))
        (setq alist (cdr alist)))
       (insert "))")
       (save-buffer))))
 
+(defconst riece-mcat-description "Translate messages")
+
+(defun riece-mcat-insinuate ()
+  (set-language-info "Japanese" 'riece-mcat-feature 'riece-mcat-japanese))
+
+(defun riece-mcat-uninstall ()
+  (set-language-info "Japanese" 'riece-mcat-feature nil))
+
 (provide 'riece-mcat)
 
 ;;; riece-mcat.el ends here
index fad5461..6987933 100644 (file)
@@ -131,7 +131,8 @@ way is to put Riece variables on .emacs or file loaded from there."
                          riece-alias
                          riece-ctlseq
                          riece-keyword
-                         riece-shrink-buffer)
+                         riece-shrink-buffer
+                         riece-mcat)
   "Add-ons insinuated into Riece."
   :type '(repeat symbol)
   :group 'riece-options)