X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mel.el;h=2ed43a402216a711414a33bbf33b905d634809f4;hb=refs%2Fheads%2Fchao-1_7_0;hp=a34d7e6229b5199e5103680daff79c1a635c0e1e;hpb=ec95b8df93a368a9c84aa9c19796002bd4680bf7;p=elisp%2Fflim.git diff --git a/mel.el b/mel.el index a34d7e6..2ed43a4 100644 --- a/mel.el +++ b/mel.el @@ -26,20 +26,17 @@ ;;; Code: -(defconst mel-version "7.2") +(require 'emu) ;;; @ 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 @@ -184,6 +181,38 @@ region by its value." ))) +;;; @ string +;;; + +;;;###autoload +(defvar mime-string-decoding-method-alist + '(("base64" . base64-decode-string) + ("quoted-printable" . quoted-printable-decode-string) + ("7bit" . identity) + ("8bit" . identity) + ("binary" . identity) + ) + "Alist of encoding vs. corresponding method to decode string. +Each element looks like (STRING . FUNCTION). +STRING is content-transfer-encoding. +FUNCTION is string decoder.") + +;;;###autoload +(defun mime-decode-string (string encoding) + "Decode STRING using ENCODING. +ENCODING must be string. If ENCODING is found in +`mime-string-decoding-method-alist' as its key, this function decodes +the STRING by its value." + (let ((f (cdr (assoc encoding mime-string-decoding-method-alist)))) + (if f + (funcall f string) + (with-temp-buffer + (insert string) + (mime-decode-region (point-min)(point-max) encoding) + (buffer-string) + )))) + + ;;; @ file ;;; @@ -194,9 +223,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) - ("8bit" . insert-binary-file-contents) - ("binary" . insert-binary-file-contents) + ("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). @@ -236,11 +265,12 @@ FUNCTION is function to write decoded region to file.") (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." - (list (region-beginning) (region-end) - (read-file-name "Write decoded region to file: ") - (completing-read "encoding: " - mime-file-decoding-method-alist - nil t "base64")) + (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)