;;; Code:
+(require 'gnus-sum)
+(require 'gnus-util)
+
;;; @ newsgroup default charset
;;;
(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
"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