Delete all trailing white space.
[gnus] / lisp / mm-uu.el
index e92d75a..83b38c8 100644 (file)
@@ -1,27 +1,25 @@
 ;;; mm-uu.el --- Return uu stuff as mm handles
 
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
 ;; Keywords: postscript uudecode binhex shar forward gnatsweb pgp
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-;;
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -89,7 +87,7 @@ This can be either \"inline\" or \"attachment\".")
 
 (defcustom mm-uu-tex-groups-regexp "\\.tex\\>"
   "*Regexp matching TeX groups."
-  :version "23.0"
+  :version "23.1"
   :type 'regexp
   :group 'gnus-article-mime)
 
@@ -167,7 +165,7 @@ This can be either \"inline\" or \"attachment\".")
      ;; dependency on `message.el'.
      "^-+[8<>]*-\\{9,\\}[a-z ]+-\\{9,\\}[a-z ]+-\\{9,\\}[8<>]*-+$"
      "^-+[8<>]*-\\{9,\\}[a-z ]+-\\{9,\\}[a-z ]+-\\{9,\\}[8<>]*-+$"
-     (lambda () (mm-uu-verbatim-marks-extract 0 -1 1 -1))
+     (lambda () (mm-uu-verbatim-marks-extract -1 0 1 -1))
      nil)
     ;; Omitting [a-z8<] leads to false positives (bogus signature separators
     ;; and mailing list banners).
@@ -245,14 +243,22 @@ The value should be nil on displays where the face
 `mm-uu-extract' isn't distinguishable to the face `default'."
   :type '(choice (const :tag "Hide" t)
                 (const :tag "Don't hide" nil))
-  :version "23.0" ;; No Gnus
+  :version "23.1" ;; No Gnus
   :group 'gnus-article-mime)
 
-(defface mm-uu-extract '(;; Colors from `gnus-cite-3' plus background:
+(defface mm-uu-extract '(;; Inspired by `gnus-cite-3'
+                        (((type tty)
+                          (class color)
+                          (background dark))
+                         (:background "dark blue"))
                         (((class color)
                           (background dark))
                          (:foreground "light yellow"
                           :background "dark green"))
+                        (((type tty)
+                          (class color)
+                          (background light))
+                         (:foreground "dark blue"))
                         (((class color)
                           (background light))
                          (:foreground "dark green"
@@ -261,7 +267,7 @@ The value should be nil on displays where the face
                          ()))
   "Face for extracted buffers."
   ;; See `mm-uu-verbatim-marks-extract'.
-  :version "23.0" ;; No Gnus
+  :version "23.1" ;; No Gnus
   :group 'gnus-article-mime)
 
 (defun mm-uu-copy-to-buffer (&optional from to properties)
@@ -272,11 +278,14 @@ If PROPERTIES is non-nil, PROPERTIES are applied to the buffer,
 see `set-text-properties'.  If PROPERTIES equals t, this means to
 apply the face `mm-uu-extract'."
   (let ((obuf (current-buffer))
-        (coding-system
+        (multi (and (boundp 'enable-multibyte-characters)
+                    enable-multibyte-characters))
+       (coding-system
          ;; Might not exist in non-MULE XEmacs
          (when (boundp 'buffer-file-coding-system)
            buffer-file-coding-system)))
     (with-current-buffer (generate-new-buffer " *mm-uu*")
+      (if multi (mm-enable-multibyte) (mm-disable-multibyte))
       (setq buffer-file-coding-system coding-system)
       (insert-buffer-substring obuf from to)
       (cond ((eq properties  t)
@@ -305,11 +314,10 @@ apply the face `mm-uu-extract'."
 
 (mm-uu-configure)
 
-(eval-when-compile
-  (defvar file-name)
-  (defvar start-point)
-  (defvar end-point)
-  (defvar entry))
+(defvar file-name)
+(defvar start-point)
+(defvar end-point)
+(defvar entry)
 
 (defun mm-uu-uu-filename ()
   (if (looking-at ".+")
@@ -375,8 +383,7 @@ apply the face `mm-uu-extract'."
                  (list mm-dissect-disposition
                        (cons 'filename file-name))))
 
-(eval-when-compile
-  (defvar gnus-newsgroup-name))
+(defvar gnus-newsgroup-name)
 
 (defun mm-uu-emacs-sources-test ()
   (setq file-name (match-string 1))
@@ -429,8 +436,14 @@ apply the face `mm-uu-extract'."
                      (list mm-dissect-disposition
                            (cons 'filename file-name)))))
 
+(defvar gnus-original-article-buffer)   ; gnus.el
+
 (defun mm-uu-yenc-extract ()
-  (mm-make-handle (mm-uu-copy-to-buffer start-point end-point)
+  ;; This might not be exactly correct, but we sure can't get the
+  ;; binary data from the article buffer, since that's already in a
+  ;; non-binary charset.  So get it from the original article buffer.
+  (mm-make-handle (with-current-buffer gnus-original-article-buffer
+                   (mm-uu-copy-to-buffer start-point end-point))
                  (list (or (and file-name
                                 (string-match "\\.[^\\.]+$" file-name)
                                 (mailcap-extension-to-mime
@@ -465,8 +478,7 @@ apply the face `mm-uu-extract'."
           (y-or-n-p "Verify pgp signed part? ")
         (message ""))))))
 
-(eval-when-compile
-  (defvar gnus-newsgroup-charset))
+(defvar gnus-newsgroup-charset)
 
 (defun mm-uu-pgp-signed-extract-1 (handles ctl)
   (let ((buf (mm-uu-copy-to-buffer (point-min) (point-max))))
@@ -474,18 +486,18 @@ apply the face `mm-uu-extract'."
       (if (mm-uu-pgp-signed-test)
          (progn
            (mml2015-clean-buffer)
-           (let ((coding-system-for-write (or gnus-newsgroup-charset
+           (let ((coding-system-for-write (or buffer-file-coding-system
+                                              gnus-newsgroup-charset
                                               'iso-8859-1))
-                 (coding-system-for-read (or gnus-newsgroup-charset
+                 (coding-system-for-read (or buffer-file-coding-system
+                                             gnus-newsgroup-charset
                                              'iso-8859-1)))
              (funcall (mml2015-clear-verify-function))))
        (when (and mml2015-use (null (mml2015-clear-verify-function)))
          (mm-set-handle-multipart-parameter
           mm-security-handle 'gnus-details
           (format "Clear verification not supported by `%s'.\n" mml2015-use)))
-       (goto-char (point-min))
-       (forward-line 1)
-       (delete-region (point-min) (point)))
+       (mml2015-extract-cleartext-signature))
       (list (mm-make-handle buf mm-uu-text-plain-type)))))
 
 (defun mm-uu-pgp-signed-extract ()
@@ -717,5 +729,4 @@ Assume text has been decoded if DECODED is non-nil."
 
 (provide 'mm-uu)
 
-;; arch-tag: 7db076bf-53db-4320-aa19-ca76a1d2ab2c
 ;;; mm-uu.el ends here