X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus-i18n.el;h=24142e5635f9581e681ba7ba7cc74a63bc4e438a;hb=8af3cd3e1219eee8d13bfc4333ade60754aa3ee3;hp=3737fb94fd4c3fb675593f09a09c339a668f6ea5;hpb=54ca0f4a40054977cdcb7c1dd4fcf6f0fbf280af;p=elisp%2Fgnus.git- diff --git a/lisp/gnus-i18n.el b/lisp/gnus-i18n.el index 3737fb9..24142e5 100644 --- a/lisp/gnus-i18n.el +++ b/lisp/gnus-i18n.el @@ -25,6 +25,9 @@ ;;; Code: +(require 'gnus-sum) +(require 'gnus-util) + ;;; @ newsgroup default charset ;;; @@ -44,14 +47,12 @@ newsgroup name. SYMBOL is MIME charset or coding-system.") (defun gnus-set-newsgroup-default-charset (newsgroup charset) "Set CHARSET for the NEWSGROUP as default MIME charset." (let* ((ng-regexp (concat "^" (regexp-quote newsgroup) "\\($\\|\\.\\)")) - (pair (assoc ng-regexp gnus-newsgroup-default-charset-alist)) - ) + (pair (assoc ng-regexp gnus-newsgroup-default-charset-alist))) (if pair (setcdr pair charset) (setq gnus-newsgroup-default-charset-alist (cons (cons ng-regexp charset) - gnus-newsgroup-default-charset-alist)) - ))) + gnus-newsgroup-default-charset-alist))))) ;;; @ localization @@ -61,30 +62,45 @@ newsgroup name. SYMBOL is MIME charset or coding-system.") "Set up `default-mime-charset' of summary buffer. It is specified by variable `gnus-newsgroup-default-charset-alist' \(cf. function `gnus-set-newsgroup-default-charset')." + ;; We are in `nntp-server-buffer' now. (if (buffer-live-p gnus-summary-buffer) - (let ((charset - (catch 'found - (let ((group - (save-excursion - (set-buffer gnus-summary-buffer) - gnus-newsgroup-name)) - (alist gnus-newsgroup-default-charset-alist)) - (while alist - (let ((pair (car alist))) - (if (string-match (car pair) group) - (throw 'found (cdr pair)) - )) - (setq alist (cdr alist))) - )))) - (when charset - (save-excursion - (set-buffer gnus-summary-buffer) - (make-local-variable 'default-mime-charset) - (setq default-mime-charset charset) - ) - (make-local-variable 'default-mime-charset) - (setq default-mime-charset charset) - )))) + (let* ((qgroup (save-excursion + (set-buffer gnus-summary-buffer) + gnus-newsgroup-name)) + (rgroup (gnus-group-real-name qgroup)) + alist pair charset) + (setq charset (catch 'found + ;; First, use "qualified" newsgroup name. + (setq alist gnus-newsgroup-default-charset-alist) + (while (setq pair (car alist)) + (if (string-match (car pair) qgroup) + (throw 'found (cdr pair))) + (setq alist (cdr alist))) + ;; Next, try "real" newsgroup name. + (setq alist gnus-newsgroup-default-charset-alist) + (while (setq pair (car alist)) + (if (string-match (car pair) rgroup) + (throw 'found (cdr pair))) + (setq alist (cdr alist))))) + (if charset + (progn + (save-excursion + ;; Set `default-mime-charset' in summary buffer. + (set-buffer gnus-summary-buffer) + (make-local-variable 'default-mime-charset) + (setq default-mime-charset charset)) + ;; Also set `default-mime-charset' in current buffer. + (make-local-variable 'default-mime-charset) + (setq default-mime-charset charset)) + ;; Reset `default-mime-charset' in current buffer. + (kill-local-variable 'default-mime-charset))))) + +(defun gnus-get-summary-default-charset () + "Get the value of `default-mime-charset' from summary buffer." + (and (buffer-live-p gnus-summary-buffer) + (save-excursion + (set-buffer gnus-summary-buffer) + default-mime-charset))) ;;; @ end