(Required environment): Modify for the new URLs of APEL and FLIM.
[elisp/semi.git] / mime-edit.el
index 0e79ba6..9c42e2b 100644 (file)
@@ -205,6 +205,7 @@ To insert a signature file automatically, call the function
      ("enriched")
      ("html")
      ("css") ; rfc2318
+     ("csv") ; rfc4180
      ("xml") ; rfc2376
      ("x-latex")
      ;; ("x-rot13-47-48")
@@ -234,26 +235,76 @@ To insert a signature file automatically, call the function
      ("news")
      )
     ("application"
+     ("javascript")
+     ("msword")
      ("octet-stream" ("type" "" "tar" "shar"))
      ("postscript")
      ("pdf")
+     ("rtf")
+     ("zip")
+     ("x-shockwave-flash")
+     ("x-7z-compressed")
+
+                                        ; OpenOffice
+     ("vnd.oasis.opendocument.text")
+     ("vnd.oasis.opendocument.spreadsheet")
+     ("vnd.oasis.opendocument.graphics")
+     ("vnd.oasis.opendocument.chart")
+     ("vnd.oasis.opendocument.formula")
+     ("vnd.oasis.opendocument.text-master")
+     ("vnd.oasis.opendocument.presentation")
+     ("vnd.oasis.opendocument.text-template")
+     ("vnd.oasis.opendocument.spreadsheet-template")
+     ("vnd.oasis.opendocument.presentation-template")
+     ("vnd.oasis.opendocument.graphics-template")
+
      ("msword")
      ("vnd.ms-excel")
      ("vnd.ms-powerpoint")
+                                        ; Microsoft Office (OpenXML)
+     ("vnd.ms-excel.addin.macroEnabled.12")
+     ("vnd.ms-excel.sheet.binary.macroEnabled.12")
+     ("vnd.ms-excel.sheet.macroEnabled.12")
+     ("vnd.ms-excel.template.macroEnabled.12")
+     ("vnd.ms-powerpoint.addin.macroEnabled.12")
+     ("vnd.ms-powerpoint.presentation.macroEnabled.12")
+     ("vnd.ms-powerpoint.slideshow.macroEnabled.12")
+     ("vnd.ms-powerpoint.template.macroEnabled.12")
+     ("vnd.ms-word.document.macroEnabled.12")
+     ("vnd.ms-word.template.macroEnabled.12")
+     ("vnd.openxmlformats-officedocument.presentationml.presentation")
+     ("vnd.openxmlformats-officedocument.presentationml.slideshow")
+     ("vnd.openxmlformats-officedocument.presentationml.template")
+     ("vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+     ("vnd.openxmlformats-officedocument.spreadsheetml.template")
+     ("vnd.openxmlformats-officedocument.wordprocessingml.document")
+     ("vnd.openxmlformats-officedocument.wordprocessingml.template")
+     ("vnd.ms-xpsdocument")
+                                        ; Microsoft Project
+     ("vnd.ms-project")
      ("x-kiss" ("x-cnf")))
     ("image"
+     ("bmp")
      ("gif")
      ("jpeg")
      ("png")
+     ("svg+xml")
      ("tiff")
      ("x-pic")
      ("x-mag")
      ("x-xwd")
-     ("x-xbm")
-     )
-    ("audio" ("basic"))
-    ("video" ("mpeg"))
-    )
+     ("x-xbm"))
+    ("audio"
+     ("basic")
+     ("mpeg")
+     ("ogg")
+     ("vorbis"))
+    ("video"
+     ("mpeg")
+     ("ogg")
+     ("mp4")
+     ("quicktime")
+     ("x-flv")))
   "*Alist of content-type, subtype, parameters and its values.")
 
 (defcustom mime-file-types
@@ -287,12 +338,30 @@ To insert a signature file automatically, call the function
 
     ;; Text or translated text
 
-    ("\\.txt$"
+    ("\\.txt$\\|\\.pln$"
      "text"    "plain"         nil
      nil
      "inline"          (("filename" . file))
      )
 
+    ("\\.css$"
+     "text"    "css"           nil
+     nil
+     "inline"          (("filename" . file))
+     )
+
+    ("\\.csv$"
+     "text"    "csv"           nil
+     nil
+     "inline"          (("filename" . file))
+     )
+
+    ("\\.tex$\\|\\.latex$"
+     "text"    "x-latex"       nil
+     nil
+     "inline"          (("filename" . file))
+     )
+
      ;; .rc : procmail modules pm-xxxx.rc
      ;; *rc : other resource files
 
@@ -317,8 +386,28 @@ To insert a signature file automatically, call the function
      "text"    "plain"         nil     nil     nil     nil)
 
 
-    ;;  Octect binary text
+    ("\\.js$"
+     "application"     "javascript" nil
+     nil
+     "inline"  (("filename" . file))
+     )
 
+    
+    ;; Microsoft Project
+    ("\\.mpp$"
+     "application" "vnd.ms-project" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    
+    
+    ;; Microsoft Office (none-OpenXML)
+    
+    ("\\.rtf$"                         ; Rich text format
+     "application" "rtf" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
     ("\\.doc$"                         ;MS Word
      "application" "msword" nil
      "base64"
@@ -335,11 +424,154 @@ To insert a signature file automatically, call the function
      "attachment" (("filename" . file))
      )
 
-    ("\\.pln$"
-     "text"    "plain"         nil
-     nil
-     "inline"          (("filename" . file))
+    
+    ;; Microsoft Office (OpenXML)
+    
+                                        ; MS Word
+    ("\\.docm$"
+     "application" "vnd.ms-word.document.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.docx$"
+     "application" "vnd.openxmlformats-officedocument.wordprocessingml.document" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.dotm$"
+     "application" "vnd.ms-word.template.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.dotx$"
+     "application" "vnd.openxmlformats-officedocument.wordprocessingml.template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    
+                                        ; MS Power Point
+    ("\\.potm$"
+     "application" "vnd.ms-powerpoint.template.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.potx$"
+     "application" "vnd.openxmlformats-officedocument.presentationml.template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ppam$"
+     "application" "vnd.ms-powerpoint.addin.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ppsm$"
+     "application" "vnd.ms-powerpoint.slideshow.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ppsx$"
+     "application" "vnd.openxmlformats-officedocument.presentationml.slideshow" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.pptm$"
+     "application" "vnd.ms-powerpoint.presentation.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.pptx$"
+     "application" "vnd.openxmlformats-officedocument.presentationml.presentation" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    
+                                        ; MS Excel
+    ("\\.xlam$"
+     "application" "vnd.ms-excel.addin.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.xlsb$"
+     "application" "vnd.ms-excel.sheet.binary.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.xlsm$"
+     "application" "vnd.ms-excel.sheet.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.xlsx$"
+     "application" "vnd.openxmlformats-officedocument.spreadsheetml.sheet" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.xltm$"
+     "application" "vnd.ms-excel.template.macroEnabled.12" nil
+     "base64"
+     "attachment" (("filename" . file))
      )
+    ("\\.xltx$"
+     "application" "vnd.openxmlformats-officedocument.spreadsheetml.template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    
+    
+    ;; Open Office
+    ("\\.odt$"
+     "application" "vnd.oasis.opendocument.text" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ods$"
+     "application" "vnd.oasis.opendocument.spreadsheet" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.odg$"
+     "application" "vnd.oasis.opendocument.graphics" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.odf$"
+     "application" "vnd.oasis.opendocument.formula" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.odm$"
+     "application" "vnd.oasis.opendocument.text-master" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.odp$"
+     "application" "vnd.oasis.opendocument.presentation" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ott$"
+     "application" "vnd.oasis.opendocument.text-template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.ots$"
+     "application" "vnd.oasis.opendocument.spreadsheet-template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.otp$"
+     "application" "vnd.oasis.opendocument.presentation-template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    ("\\.otg$"
+     "application" "vnd.oasis.opendocument.graphics-template" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
+    
+       ;; Postscript and PDF
     ("\\.ps$"
      "application" "postscript"        nil
      "base64"
@@ -368,6 +600,16 @@ To insert a signature file automatically, call the function
      "base64"
      "inline"          (("filename" . file))
      )
+    ("\\.bmp$"
+     "image"   "bmp"           nil
+     "base64"
+     "inline"          (("filename" . file))
+     )
+    ("\\.svg$"
+     "image"   "svg+xml"   nil
+     "base64"
+     "inline"          (("filename" . file))
+     )
     ("\\.tiff$"
      "image"   "tiff"          nil
      "base64"
@@ -393,16 +635,58 @@ To insert a signature file automatically, call the function
      "base64"
      "inline"          (("filename" . file))
      )
-    ("\\.au$"
+
+       ;; Audio and video
+
+    ("\\.au$\\|\\.snd$"
      "audio"   "basic"         nil
      "base64"
      "attachment"              (("filename" . file))
      )
-    ("\\.mpg$"
+    ("\\.mp[234]\\|\\.m4[abp]$"
+     "audio"   "mpeg"          nil
+     "base64"
+     "attachment"              (("filename" . file))
+     )
+    ("\\.ogg$"
+     "audio"   "ogg"           nil
+     "base64"
+     "attachment"              (("filename" . file))
+     )
+    ("\\.ogg$"
+     "audio"   "vorbis"                nil
+     "base64"
+     "attachment"              (("filename" . file))
+     )
+    ("\\.mpg\\|\\.mpeg$"
      "video"   "mpeg"          nil
      "base64"
      "attachment"      (("filename" . file))
      )
+    ("\\.mp4\\|\\.m4v$"
+     "video"   "mp4"           nil
+     "base64"
+     "attachment"      (("filename" . file))
+     )
+    ("\\.qt$\\|\\.mov$"
+     "video"   "quicktime"             nil
+     "base64"
+     "attachment"      (("filename" . file))
+     )
+    ("\\.flv$"
+     "video"   "x-flv"         nil
+     "base64"
+     "attachment"      (("filename" . file))
+     )
+    ("\\.swf$"
+     "application"     "x-shockwave-flash"             nil
+     "base64"
+     "attachment"      (("filename" . file))
+     )
+
+
+       ;; Compressed files
+
     ("\\.tar\\.gz$"
      "application" "octet-stream" (("type" . "tar+gzip"))
      "base64"
@@ -443,6 +727,11 @@ To insert a signature file automatically, call the function
      "base64"
      "attachment"      (("filename" . file))
      )
+    ("\\.7z$"
+     "application" "x-7z-compressed" nil
+     "base64"
+     "attachment"      (("filename" . file))
+     )
 
     ;; Rest
 
@@ -1067,10 +1356,11 @@ User customizable variables (not documented all of them):
 
     (enable-invisible)
 
-    ;; I don't care about saving these.
+    (make-local-variable 'paragraph-start)
     (setq paragraph-start
          (regexp-or mime-edit-single-part-tag-regexp
                     paragraph-start))
+    (make-local-variable 'paragraph-separate)
     (setq paragraph-separate
          (regexp-or mime-edit-single-part-tag-regexp
                     paragraph-separate))
@@ -1156,13 +1446,10 @@ If optional argument SUBTYPE is not nil, text/SUBTYPE tag is inserted."
          (disposition-type (nth 4 guess))
          (disposition-params (nth 5 guess))
          )
-    (if verbose
-       (setq type    (mime-prompt-for-type type)
-             subtype (mime-prompt-for-subtype type subtype)
-             ))
     (if (or (interactive-p) verbose)
-       (setq encoding (mime-prompt-for-encoding encoding))
-      )
+       (setq type (mime-prompt-for-type type)
+             subtype (mime-prompt-for-subtype type subtype)
+             encoding (mime-prompt-for-encoding encoding)))
     (if (or (consp parameters) (stringp disposition-type))
        (let ((rest parameters) cell attribute value)
          (setq parameters "")
@@ -1733,6 +2020,7 @@ Parameter must be '(PROMPT CHOICE1 (CHOICE2...))."
                    )
                (delete-region beg end)
                (or (looking-at mime-edit-beginning-tag-regexp)
+                   (looking-at mime-edit-multipart-end-regexp)
                    (eobp)
                    (insert (concat (mime-make-text-tag) "\n"))
                    )))
@@ -1933,6 +2221,7 @@ Content-Transfer-Encoding: 7bit
 --%s
 Content-Type: application/pgp-encrypted
 
+Version: 1
 --%s
 Content-Type: application/octet-stream
 Content-Transfer-Encoding: 7bit
@@ -2588,11 +2877,11 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
            (setq mime-edit-pgp-processing 
                  (nconc mime-edit-pgp-processing 
                         (copy-sequence '(encrypt)))))
-       (message "This message will be encrypt.")
+       (message "This message will be encrypted.")
        )
     (setq mime-edit-pgp-processing
          (delq 'encrypt mime-edit-pgp-processing))
-    (message "This message will not be encrypt.")
+    (message "This message will not be encrypted.")
     ))
 
 (defun mime-edit-pgp-enclose-buffer ()
@@ -2602,20 +2891,13 @@ Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
                   (match-end 0)
                 )))
        )
-    (if beg
-       (dolist (pgp-processing mime-edit-pgp-processing)
-         (case pgp-processing
-           (sign
-            (mime-edit-enclose-pgp-signed-region 
-             beg (point-max))
-            )
-           (encrypt
-            (mime-edit-enclose-pgp-encrypted-region 
-             beg (point-max))
-            )))
+    (when beg
+      (if (memq 'sign mime-edit-pgp-processing)
+         (mime-edit-enclose-pgp-signed-region beg (point-max)))
+      (if (memq 'encrypt mime-edit-pgp-processing)
+         (mime-edit-enclose-pgp-encrypted-region beg (point-max)))
       )))
 
-
 ;;; @ split
 ;;;