X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-w3.el;h=4d69c3571a222c28561ace9272f9f44f68870390;hb=3825ab9242cb8aaa5e6d5dbbae37e526564a09aa;hp=f17ac45b0263cfa1446bde394c7954d00d5281bd;hpb=dbae10fbd822fdee5adea0174cd09c387eae1d1d;p=elisp%2Fsemi.git diff --git a/mime-w3.el b/mime-w3.el index f17ac45..4d69c35 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). @@ -24,37 +24,55 @@ ;;; Code: -(require 'w3) -(require 'mime-text) +(condition-case nil + (require 'w3) + (error nil)) +(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 - (get-buffer gnus-article-buffer)) - )) + (font-set-face-background 'default color (current-buffer)))) (cons 'progn body))) +(defvar mime-w3-message-structure nil) + (defun mime-preview-text/html (entity situation) - (mime-save-background-color - (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