]> code.delx.au - gnu-emacs/blobdiff - lisp/gnus/mml.el
(lisp-mode-shared-map): Bind `backspace' to `backward-delete-char-untabify'.
[gnu-emacs] / lisp / gnus / mml.el
index 86faed8aa5375f8e434de8a6c253be2e2524c634..83b16f135f9cd2257ebb694691ee52a4f5082269 100644 (file)
 (require 'mm-bodies)
 (require 'mm-encode)
 (require 'mm-decode)
-(eval-when-compile 'cl)
+(eval-when-compile (require 'cl))
 
 (eval-and-compile
   (autoload 'message-make-message-id "message")
   (autoload 'gnus-setup-posting-charset "gnus-msg")
+  (autoload 'gnus-add-minor-mode "gnus-ems")
   (autoload 'message-fetch-field "message")
   (autoload 'message-posting-charset "message"))
 
@@ -126,16 +127,16 @@ The function is called with one parameter, which is the generated part.")
                warn t))
        (setq raw (cdr (assq 'raw tag))
              point (point)
-             contents (if raw
-                          (mm-with-unibyte-current-buffer
-                            (mml-read-part (eq 'mml (car tag))))
-                        (mml-read-part (eq 'mml (car tag))))
+             contents (mml-read-part (eq 'mml (car tag)))
              charsets (if raw nil 
                         (mm-find-mime-charset-region point (point))))
        (when (and (not raw) (memq nil charsets))
          (if (or (memq 'unknown-encoding mml-confirmation-set)
-                 (y-or-n-p
-                  "Warning: You message contains characters with unknown encoding. Really send?"))
+                 (prog1 (y-or-n-p
+                  "\
+Message contains characters with unknown encoding.  Really send?")
+                   (set (make-local-variable 'mml-confirmation-set)
+                        (push 'unknown-encoding mml-confirmation-set))))
              (if (setq use-ascii 
                        (or (memq 'use-ascii mml-confirmation-set)
                            (y-or-n-p "Use ASCII as charset?")))
@@ -155,10 +156,13 @@ The function is called with one parameter, which is the generated part.")
            (when (and warn
                       (not (memq 'multipart mml-confirmation-set))
                       (not
-                       (y-or-n-p
-                        (format
-                         "Warning: Your message contains more than %d parts.  Really send? "
-                         (length nstruct)))))
+                       (prog1 (y-or-n-p
+                               (format
+                                "\
+A message part needs to be split into %d charset parts.  Really send? "
+                                (length nstruct)))
+                         (set (make-local-variable 'mml-confirmation-set)
+                              (push 'multipart mml-confirmation-set)))))
              (error "Edit your message to use only one charset"))
            (setq struct (nconc nstruct struct)))))))
     (unless (eobp)
@@ -352,8 +356,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
                  coded (buffer-string))))
        (mml-insert-mime-headers cont type charset encoding)
        (insert "\n")
-       (mm-with-unibyte-current-buffer
-         (insert coded))))
+       (insert coded)))
      ((eq (car cont) 'external)
       (insert "Content-Type: message/external-body")
       (let ((parameters (mml-parameter-string
@@ -510,8 +513,9 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
         (mail-header-encode-parameter
          (symbol-name type) value))))))
 
-(defvar ange-ftp-name-format)
-(defvar efs-path-regexp)
+(eval-when-compile
+  (defvar ange-ftp-name-format)
+  (defvar efs-path-regexp))
 (defun mml-parse-file-name (path)
   (if (if (boundp 'efs-path-regexp)
          (string-match efs-path-regexp path)
@@ -708,25 +712,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
                      "application/octet-stream"))
         (string (completing-read
                  (format "Content type (default %s): " default)
-                 (mapcar
-                  'list
-                  (mm-delete-duplicates
-                   (nconc
-                    (mapcar 'cdr mailcap-mime-extensions)
-                    (apply
-                     'nconc
-                     (mapcar
-                      (lambda (l)
-                        (delq nil
-                              (mapcar
-                               (lambda (m)
-                                 (let ((type (cdr (assq 'type (cdr m)))))
-                                   (if (equal (cadr (split-string type "/"))
-                                              "*")
-                                       nil
-                                     type)))
-                               (cdr l))))
-                      mailcap-mime-data))))))))
+                 (mapcar 'list (mailcap-mime-types)))))
     (if (not (equal string ""))
        string
       default)))
@@ -852,7 +838,12 @@ If RAW, don't highlight the article."
        (replace-match "\n"))
     (mml-to-mime)
     (if raw
-       (mm-disable-multibyte)
+       (when (fboundp 'set-buffer-multibyte)
+         (let ((s (buffer-string)))
+           ;; Insert the content into unibyte buffer.
+           (erase-buffer)
+           (mm-disable-multibyte)
+           (insert s)))
       (let ((gnus-newsgroup-charset (car message-posting-charset)))
        (run-hooks 'gnus-article-decode-hook)
        (let ((gnus-newsgroup-name "dummy"))