X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-mcat.el;h=ab94aa5e474be0883c1553567132331ba18c2ce5;hb=5fd4264d143d5a307c65fe07ff2030d9175ed821;hp=0e3f250aaa192b29204f6665edd2302a492d598a;hpb=4a4cf53d85cdc71a21f2e06322a0f952d3283347;p=riece diff --git a/lisp/riece-mcat.el b/lisp/riece-mcat.el index 0e3f250..ab94aa5 100644 --- a/lisp/riece-mcat.el +++ b/lisp/riece-mcat.el @@ -1,4 +1,4 @@ -;;; riece-mcat.el --- message catalog +;;; riece-mcat.el --- message catalog -*- lexical-binding: t -*- ;; Copyright (C) 2007 Daiki Ueno ;; Author: Daiki Ueno @@ -26,8 +26,9 @@ (defun riece-mcat (string) "Translate STRING in the current language environment." - (let ((feature (get-language-info current-language-environment - 'riece-mcat-feature))) + (let ((feature (if (featurep 'mule) + (get-language-info current-language-environment + 'riece-mcat-feature)))) (if feature (progn (require feature) @@ -39,14 +40,16 @@ (defun riece-mcat-extract-from-form (form) (if (and form (listp form) (listp (cdr form))) - (if (eq (car form) 'riece-mcat) + (if (and (= (length form) 2) + (eq (car form) 'riece-mcat) + (stringp (car (cdr form)))) (cdr form) (delq nil (apply #'nconc (mapcar #'riece-mcat-extract-from-form form)))))) -(defun riece-mcat-extract (files alist) +(defun riece-mcat-extract (files) (save-excursion - (let (message-list) + (let (message-list pointer) (while files (with-temp-buffer (insert-file-contents (car files)) @@ -61,22 +64,19 @@ (riece-mcat-extract-from-form (read (current-buffer))))))) (setq files (cdr files))) - (setq message-list (sort message-list #'string-lessp)) - (while message-list - (if (equal (car message-list) - (nth 1 message-list)) - (setq message-list (nthcdr 2 message-list)) - (unless (assoc (car message-list) alist) - (setq alist (cons (list (car message-list)) alist))) - (setq message-list (cdr message-list)))) - alist))) + (setq message-list (sort message-list #'string-lessp) + pointer message-list) + (while pointer + (if (member (car pointer) (cdr pointer)) + (setcar pointer nil)) + (setq pointer (cdr pointer))) + (delq nil message-list)))) (defun riece-mcat-update (files mcat-file mcat-alist-symbol) "Update MCAT-FILE." (let ((pp-escape-newlines t) alist) - (save-excursion - (set-buffer (find-file-noselect mcat-file)) + (with-current-buffer (find-file-noselect mcat-file) (goto-char (point-min)) (if (re-search-forward (concat "^\\s-*(\\(defvar\\|defconst\\)\\s-+" (regexp-quote (symbol-name @@ -88,7 +88,11 @@ (eval (read (current-buffer)))) (delete-region (point) (progn (forward-sexp) (point)))) (set mcat-alist-symbol nil)) - (setq alist (riece-mcat-extract files (symbol-value mcat-alist-symbol))) + (setq alist (mapcar (lambda (message) + (or (assoc message + (symbol-value mcat-alist-symbol)) + (list message))) + (riece-mcat-extract files))) (insert "(defconst " (symbol-name mcat-alist-symbol) "\n '(") (while alist (insert "(" (pp-to-string (car (car alist))) " . " @@ -99,7 +103,7 @@ (insert "))") (save-buffer)))) -(defconst riece-mcat-description "Translate messages") +(defconst riece-mcat-description "Translate messages.") (defun riece-mcat-insinuate () (set-language-info "Japanese" 'riece-mcat-feature 'riece-mcat-japanese))