X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mel.el;h=01efaf2c62279ae455c7fd9c2c161206bf363e02;hb=b929f765a7e3e5b9f8c5f8d4896149ec4af614e6;hp=93ee0d67fb123d8b8598ac933bac490e8acabbd7;hpb=c8c9b6f08862eca91677126dedc230dc8c2cf9e2;p=elisp%2Fflim.git diff --git a/mel.el b/mel.el index 93ee0d6..01efaf2 100644 --- a/mel.el +++ b/mel.el @@ -5,7 +5,6 @@ ;; Author: MORIOKA Tomohiko ;; modified by Shuhei KOBAYASHI ;; Created: 1995/6/25 -;; Version: $Id: mel.el,v 7.2 1998/01/11 16:16:44 morioka Exp $ ;; Keywords: MIME, Base64, Quoted-Printable, uuencode, gzip64 ;; This file is part of MEL (MIME Encoding Library). @@ -27,17 +26,19 @@ ;;; Code: +(require 'emu) + +(defconst mel-version "7.5") + + ;;; @ variable ;;; -(defvar mime-temp-directory (or (getenv "MIME_TMP_DIR") - (getenv "TM_TMP_DIR") - "/tmp/") - "*Directory for temporary files.") - (defvar base64-dl-module (and (fboundp 'dynamic-link) - (expand-file-name "base64.so" exec-directory))) + (let ((path (expand-file-name "base64.so" exec-directory))) + (and (file-exists-p path) + path)))) ;;; @ autoload @@ -54,6 +55,8 @@ "Decode current region by base64." t) (autoload 'base64-insert-encoded-file "mel-dl" "Encode contents of file to base64, and insert the result." t) + (autoload 'base64-write-decoded-region "mel-dl" + "Decode and write current region encoded by base64 into FILENAME." t) ;; for encoded-word (autoload 'base64-encoded-length "mel-dl") ) @@ -68,6 +71,8 @@ "Decode current region by base64." t) (autoload 'base64-insert-encoded-file "mel-b" "Encode contents of file to base64, and insert the result." t) + (autoload 'base64-write-decoded-region "mel-b" + "Decode and write current region encoded by base64 into FILENAME." t) ;; for encoded-word (autoload 'base64-encoded-length "mel-b") )) @@ -82,6 +87,9 @@ "Decode current region by Quoted-Printable." t) (autoload 'quoted-printable-insert-encoded-file "mel-q" "Encode contents of file to quoted-printable, and insert the result." t) +(autoload 'quoted-printable-write-decoded-region "mel-q" + "Decode and write current region encoded by quoted-printable into FILENAME." + t) ;; for encoded-word (autoload 'q-encoding-encode-string "mel-q" "Encode STRING to Q-encoding of encoded-word, and return the result.") @@ -95,6 +103,8 @@ "Decode current region by unofficial uuencode format." t) (autoload 'uuencode-insert-encoded-file "mel-u" "Insert file encoded by unofficial uuencode format." t) +(autoload 'uuencode-write-decoded-region "mel-u" + "Decode and write current region encoded by uuencode into FILENAME." t) (autoload 'gzip64-encode-region "mel-g" "Encode current region by unofficial x-gzip64 format." t) @@ -102,6 +112,8 @@ "Decode current region by unofficial x-gzip64 format." t) (autoload 'gzip64-insert-encoded-file "mel-g" "Insert file encoded by unofficial gzip64 format." t) +(autoload 'gzip64-write-decoded-region "mel-g" + "Decode and write current region encoded by gzip64 into FILENAME." t) ;;; @ region @@ -181,9 +193,9 @@ region by its value." ;; Not standard, their use is DISCOURAGED. ;; ("x-uue" . uuencode-insert-encoded-file) ;; ("x-gzip64" . gzip64-insert-encoded-file) - ("7bit" . insert-binary-file-contents-literally) - ("8bit" . insert-binary-file-contents-literally) - ("binary" . insert-binary-file-contents-literally) + ("7bit" . insert-file-contents-as-binary) + ("8bit" . insert-file-contents-as-binary) + ("binary" . insert-file-contents-as-binary) ) "Alist of encoding vs. corresponding method to insert encoded file. Each element looks like (STRING . FUNCTION). @@ -191,6 +203,21 @@ STRING is content-transfer-encoding. FUNCTION is function to insert encoded file.") ;;;###autoload +(defvar mime-file-decoding-method-alist + '(("base64" . base64-write-decoded-region) + ("quoted-printable" . quoted-printable-write-decoded-region) + ("x-uue" . uuencode-write-decoded-region) + ("x-gzip64" . gzip64-write-decoded-region) + ("7bit" . write-region-as-binary) + ("8bit" . write-region-as-binary) + ("binary" . write-region-as-binary) + ) + "Alist of encoding vs. corresponding method to write decoded region to file. +Each element looks like (STRING . FUNCTION). +STRING is content-transfer-encoding. +FUNCTION is function to write decoded region to file.") + +;;;###autoload (defun mime-insert-encoded-file (filename encoding) "Insert file FILENAME encoded by ENCODING format." (interactive @@ -204,6 +231,21 @@ FUNCTION is function to insert encoded file.") (funcall f filename) ))) +;;;###autoload +(defun mime-write-decoded-region (start end filename encoding) + "Decode and write current region encoded by ENCODING into FILENAME. +START and END are buffer positions." + (interactive + (list (region-beginning) (region-end) + (read-file-name "Write decoded region to file: ") + (completing-read "encoding: " + mime-file-decoding-method-alist + nil t "base64"))) + (let ((f (cdr (assoc encoding mime-file-decoding-method-alist)))) + (if f + (funcall f start end filename) + ))) + ;;; @ end ;;;