New public branch gnus-6_10.
[elisp/gnus.git-] / lisp / gnus-art.el
index b46cf8b..e60a1dc 100644 (file)
@@ -391,13 +391,6 @@ The function is called from the article buffer."
   :group 'gnus-article-mime
   :type 'function)
 
-(defcustom gnus-article-display-method-for-encoded-word
-  'gnus-article-display-message-with-encoded-word
-  "*Function to display a message with MIME encoded-words.
-The function is called from the article buffer."
-  :group 'gnus-article-mime
-  :type 'function)
-
 (defcustom gnus-article-display-method-for-traditional
   'gnus-article-display-traditional-message
   "*Function to display a traditional message.
@@ -848,7 +841,7 @@ characters to translate to."
     (when (search-forward "\n\n" nil t)
       (let ((buffer-read-only nil))
        (while (search-forward "\b" nil t)
-         (let ((next (following-char))
+         (let ((next (char-after))
                (previous (char-after (- (point) 2))))
            ;; We do the boldification/underlining by hiding the
            ;; overstrikes and putting the proper text property
@@ -881,7 +874,7 @@ characters to translate to."
            (adaptive-fill-mode t))
        (while (not (eobp))
          (and (>= (current-column) (min fill-column (window-width)))
-              (/= (preceding-char) ?:)
+              (not (eq (char-before) ?:))
               (fill-paragraph nil))
          (end-of-line 2))))))
 
@@ -965,7 +958,7 @@ characters to translate to."
     (let ((charset (save-excursion
                     (set-buffer gnus-summary-buffer)
                     default-mime-charset)))
-      (eword-decode-header charset)
+      (mime-decode-header-in-buffer charset)
       )))
 
 (defun article-hide-pgp (&optional arg)
@@ -1840,8 +1833,28 @@ If variable `gnus-use-long-file-name' is non-nil, it is
   "\M-^" gnus-article-read-summary-keys
   "\M-g" gnus-article-read-summary-keys)
 
-(substitute-key-definition
- 'undefined 'gnus-article-read-summary-keys gnus-article-mode-map)
+;; Define almost undefined keys to `gnus-article-read-summary-keys'.
+(mapcar
+ (lambda (key)
+   (unless (lookup-key gnus-article-mode-map key)
+     (define-key gnus-article-mode-map key
+       'gnus-article-read-summary-keys)))
+ (delq nil
+       (append
+       (mapcar
+        (lambda (elt)
+          (let ((key (car elt)))
+            (and (> (length key) 0)
+                 (not (eq 'menu-bar (aref key 0)))
+                 (symbolp (lookup-key gnus-summary-mode-map key))
+                 key)))
+        (accessible-keymaps gnus-summary-mode-map))
+       (let ((c 127)
+             keys)
+         (while (>= c 32)
+           (push (char-to-string c) keys)
+           (decf c))
+         keys))))
 
 (defun gnus-article-make-menu-bar ()
   (gnus-turn-off-edit-menu 'article)
@@ -1968,11 +1981,15 @@ commands:
 (defun gnus-article-display-mime-message ()
   "Article display method for MIME message."
   ;; called from `gnus-original-article-buffer'.
-  (let ((default-mime-charset (save-excursion
-                               (set-buffer gnus-summary-buffer)
-                               default-mime-charset)))
+  (let ((charset (with-current-buffer gnus-summary-buffer
+                  default-mime-charset)))
+    (make-local-variable 'default-mime-charset)
+    (setq default-mime-charset charset)
     (mime-display-message mime-message-structure
-                         gnus-article-buffer nil gnus-article-mode-map))
+                         gnus-article-buffer nil gnus-article-mode-map)
+    (make-local-variable 'default-mime-charset)
+    (setq default-mime-charset charset)
+    )
   ;; `mime-display-message' changes current buffer to `gnus-article-buffer'.
   (make-local-variable 'mime-button-mother-dispatcher)
   (setq mime-button-mother-dispatcher
@@ -1986,20 +2003,6 @@ commands:
     (erase-buffer)
     (insert-buffer-substring gnus-original-article-buffer)))
 
-(defun gnus-article-display-message-with-encoded-word ()
-  "Article display method for message with encoded-words."
-  (let ((charset (save-excursion
-                  (set-buffer gnus-summary-buffer)
-                  default-mime-charset)))
-    (gnus-article-display-traditional-message)
-    (let (buffer-read-only)
-      (eword-decode-header charset)
-      (goto-char (point-min))
-      (if (search-forward "\n\n" nil t)
-         (decode-mime-charset-region (match-end 0) (point-max) charset)))
-    (mime-maybe-hide-echo-buffer))
-  (gnus-run-hooks 'gnus-mime-article-prepare-hook))
-
 (defun gnus-article-make-full-mail-header (&optional number charset)
   "Create a new mail header structure in a raw article buffer."
   (unless (and number charset)
@@ -2144,11 +2147,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (let ((method
         (if gnus-show-mime
             (progn
-              (mime-parse-buffer)
-              (if (or (not gnus-strict-mime)
-                      (mime-fetch-field "MIME-Version"))
-                  gnus-article-display-method-for-mime
-                gnus-article-display-method-for-encoded-word))
+              (setq mime-message-structure gnus-current-headers)
+              gnus-article-display-method-for-mime)
           gnus-article-display-method-for-traditional)))
     (gnus-run-hooks 'gnus-tmp-internal-hook)
     (gnus-run-hooks 'gnus-article-prepare-hook)
@@ -3391,7 +3391,7 @@ forbidden in URL encoding."
 ;;;
 
 (defun gnus-article-header-presentation-method (entity situation)
-  (mime-insert-decoded-header entity)
+  (mime-insert-header entity)
   )
 
 (set-alist 'mime-header-presentation-method-alist
@@ -3421,6 +3421,18 @@ forbidden in URL encoding."
 (set-alist 'mime-preview-following-method-alist
           'gnus-original-article-mode #'gnus-following-method)
 
+(set-alist 'mime-preview-over-to-previous-method-alist
+          'gnus-original-article-mode
+          (lambda ()
+            (gnus-article-read-summary-keys
+             nil (gnus-character-to-event ?P))))
+
+(set-alist 'mime-preview-over-to-next-method-alist
+          'gnus-original-article-mode'
+          (lambda ()
+            (gnus-article-read-summary-keys
+             nil (gnus-character-to-event ?N))))
+
 
 ;;; @ end
 ;;;