X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-text.el;h=d0860d2eff77796a302c4a324e3377d6f1f88a58;hb=01e5c17f7b94677443c8286583cd8030fbc4ede4;hp=c18b2962a4f88dc84c42d37d4d8e5b52ccb36557;hpb=792689b58e31c316f20e34fba6b242e4e2362fc8;p=elisp%2Fsemi.git diff --git a/mime-text.el b/mime-text.el index c18b296..d0860d2 100644 --- a/mime-text.el +++ b/mime-text.el @@ -36,68 +36,22 @@ It decodes MIME-encoding then code-converts as MIME-charset. MIME-encoding is value of field 'encoding of SITUATION. It must be 'nil or string. MIME-charset is value of field \"charset\" of SITUATION. It must be symbol." - (let* ((buffer (mime-entity-buffer entity)) - (presentation-type - (save-excursion - (set-buffer buffer) - (or mime-raw-representation-type - (cdr (or (assq major-mode mime-raw-representation-type-alist) - (assq t mime-raw-representation-type-alist))) - )))) - (save-restriction - (insert-buffer-substring buffer - (mime-entity-body-start entity) - (mime-entity-body-end entity)) - (let ((encoding (mime-entity-encoding entity))) - (mime-decode-region (point-min) (point-max) encoding) - (if (or (eq presentation-type 'binary) - (not (member encoding '(nil "7bit" "8bit" "binary")))) - (decode-mime-charset-region (point-min)(point-max) - (or (mime-content-type-parameter - (mime-entity-content-type entity) - "charset") - default-mime-charset)) - )))) + (let ((str (mime-entity-content entity))) + (insert + (if (and (mime-entity-cooked-p entity) + (member (mime-entity-encoding entity) + '(nil "7bit" "8bit" "binary"))) + str + (decode-mime-charset-string str + (or (mime-content-type-parameter + (mime-entity-content-type entity) + "charset") + default-mime-charset)) + ))) (run-hooks 'mime-text-decode-hook) ) -;;; @ for URL -;;; - -(require 'browse-url) - -(defvar mime-text-url-regexp - "\\(http\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]" - "*Regexp to match URL in text/plain body.") - -(defun mime-text-browse-url (&optional url) - (if (fboundp browse-url-browser-function) - (if url - (funcall browse-url-browser-function url) - (call-interactively browse-url-browser-function)) - (if (fboundp mime-button-mother-dispatcher) - (call-interactively mime-button-mother-dispatcher) - ) - )) - -(defsubst mime-text-add-url-buttons () - "Add URL-buttons for text body." - (goto-char (point-min)) - (while (re-search-forward mime-text-url-regexp nil t) - (let ((beg (match-beginning 0)) - (end (match-end 0))) - (mime-add-button beg end #'mime-text-browse-url - (list (buffer-substring beg end))) - ))) - -(defun mime-text-add-url-buttons-maybe () - "Add URL-buttons if 'browse-url-browser-function is not 'nil." - (if browse-url-browser-function - (mime-text-add-url-buttons) - )) - - ;;; @ content filters for mime-text ;;; @@ -109,7 +63,7 @@ SITUATION. It must be symbol." (if (not (eq (char-after (1- (point))) ?\n)) (insert "\n") ) - (mime-text-add-url-buttons) + (mime-add-url-buttons) (run-hooks 'mime-display-text/plain-hook) ))