X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-w3.el;h=ff2aeccc6015fe7bc68b10319a0486acc07733bc;hb=17cacd9ff91f19bac96c1b6f9db2c414a53d2b68;hp=b5b0e41c704a1cd5ed3a9d87297c8bbf27ff94b2;hpb=050d2808f8f2082b60a935c83d42b343432974b6;p=elisp%2Fsemi.git diff --git a/mime-w3.el b/mime-w3.el index b5b0e41..ff2aecc 100644 --- a/mime-w3.el +++ b/mime-w3.el @@ -1,8 +1,8 @@ ;;; mime-w3.el --- mime-view content filter for text -;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1994,95,96,97,98,99,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: HTML, MIME, multimedia, mail, news ;; This file is part of SEMI (Suite of Emacs MIME Interfaces). @@ -25,26 +25,56 @@ ;;; Code: (require 'w3) -(require 'mime-text) +(require 'mime) (defmacro mime-put-keymap-region (start end keymap) `(put-text-property ,start ,end ',(if (featurep 'xemacs) 'keymap 'local-map) - ,keymap) - ) + ,keymap)) + +(defmacro mime-save-background-color (&rest body) + (if (featurep 'xemacs) + `(let ((color (color-name (face-background 'default)))) + (prog1 + (progn ,@body) + (font-set-face-background 'default color (current-buffer)) + )) + (cons 'progn body))) + +(defvar mime-w3-message-structure nil) (defun mime-preview-text/html (entity situation) - (save-restriction - (narrow-to-region (point-max)(point-max)) - (mime-text-insert-decoded-body entity) - (let ((beg (point-min))) - (remove-text-properties beg (point-max) '(face nil)) - (w3-region beg (point-max)) - (mime-put-keymap-region beg (point-max) w3-mode-map) + (setq mime-w3-message-structure (mime-find-root-entity entity)) + (goto-char (point-max)) + (let ((p (point))) + (insert "\n") + (goto-char p) + (mime-save-background-color + (save-restriction + (narrow-to-region p p) + (mime-insert-text-content entity) + (run-hooks 'mime-text-decode-hook) + (condition-case err + (w3-region p (point-max)) + (error (message (format "%s" err)))) + (mime-put-keymap-region p (point-max) w3-mode-map) + )))) + +(defun url-cid (url &optional proxy-info) + (let ((entity + (mime-find-entity-from-content-id (mime-uri-parse-cid url) + mime-w3-message-structure))) + (when entity + (mime-insert-entity-content entity) + (setq url-current-mime-type (mime-entity-type/subtype entity)) ))) +(url-register-protocol "cid" + 'url-cid + 'url-identity-expander) + ;;; @ end ;;;