Fix typo in nnmh.el and Insert different Message-ID in each message/partail message
[elisp/gnus.git-] / lisp / gnus-i18n.el
index 3737fb9..24142e5 100644 (file)
@@ -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