X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fmm-view.el;h=9512a411d8154a4fb828b3f442ce0770198f9aac;hb=a35f25ab6b239d72a4d082cb72679b6777637b4e;hp=39d49af06004e4e188a85fa869d4ecac0e819604;hpb=005516d5b03f4a6aa11ec9a7ebb1bbff4d119ccc;p=gnus diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 39d49af06..9512a411d 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -1,6 +1,6 @@ ;;; mm-view.el --- functions for viewing MIME objects -;; Copyright (C) 1998-2011 Free Software Foundation, Inc. +;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -90,13 +90,14 @@ (put-image (let ((image (mm-get-image handle))) (if (eq mm-inline-large-images 'resize) - (gnus-rescale-image image - (let ((edges (gnus-window-inside-pixel-edges - (get-buffer-window (current-buffer))))) - (cons (truncate (* mm-inline-large-images-proportion - (- (nth 2 edges) (nth 0 edges)))) - (truncate (* mm-inline-large-images-proportion - (- (nth 3 edges) (nth 1 edges))))))) + (gnus-rescale-image + image + (let ((edges (gnus-window-inside-pixel-edges + (get-buffer-window (current-buffer))))) + (cons (truncate (* mm-inline-large-images-proportion + (- (nth 2 edges) (nth 0 edges)))) + (truncate (* mm-inline-large-images-proportion + (- (nth 3 edges) (nth 1 edges))))))) image)) b) (insert "\n\n") @@ -418,16 +419,18 @@ (buffer-string))))) (defun mm-inline-text-html (handle) - (let* ((func mm-text-html-renderer) - (entry (assq func mm-text-html-renderer-alist)) - (inhibit-read-only t)) - (if entry - (setq func (cdr entry))) - (cond - ((functionp func) - (funcall func handle)) - (t - (apply (car func) handle (cdr func)))))) + (if (stringp (car handle)) + (mapcar 'mm-inline-text-html (cdr handle)) + (let* ((func mm-text-html-renderer) + (entry (assq func mm-text-html-renderer-alist)) + (inhibit-read-only t)) + (if entry + (setq func (cdr entry))) + (cond + ((functionp func) + (funcall func handle)) + (t + (apply (car func) handle (cdr func))))))) (defun mm-inline-text-vcard (handle) (let ((inhibit-read-only t)) @@ -495,9 +498,6 @@ (defun mm-inline-audio (handle) (message "Not implemented")) -(defun mm-view-sound-file () - (message "Not implemented")) - (defun mm-w3-prepare-buffer () (require 'w3) (let ((url-standalone-mode t) @@ -565,6 +565,8 @@ (face-property 'default prop) (current-buffer)))) (delete-region ,(point-min-marker) ,(point-max-marker))))))))) +;; Shut up byte-compiler. +(defvar font-lock-mode-hook) (defun mm-display-inline-fontify (handle &optional mode) "Insert HANDLE inline fontifying with MODE. If MODE is not set, try to find mode automatically." @@ -596,19 +598,26 @@ If MODE is not set, try to find mode automatically." (t text))) (require 'font-lock) - (let ((font-lock-maximum-size nil) - ;; Disable support modes, e.g., jit-lock, lazy-lock, etc. - (font-lock-mode-hook nil) - (font-lock-support-mode nil) - ;; I find font-lock a bit too verbose. - (font-lock-verbose nil)) + ;; I find font-lock a bit too verbose. + (let ((font-lock-verbose nil) + (font-lock-support-mode nil)) + ;; Disable support modes, e.g., jit-lock, lazy-lock, etc. + ;; Note: XEmacs people use `font-lock-mode-hook' to run those modes. + (set (make-local-variable 'font-lock-mode-hook) nil) (setq buffer-file-name (mm-handle-filename handle)) - (if mode - (funcall mode) - (normal-mode)) - ;; The mode function might have already turned on font-lock. - (unless (symbol-value 'font-lock-mode) - (font-lock-fontify-buffer))) + (set (make-local-variable 'enable-local-variables) nil) + (with-demoted-errors + (if mode + (funcall mode) + (let ((auto-mode-alist + (delq (rassq 'doc-view-mode-maybe auto-mode-alist) + (copy-sequence auto-mode-alist)))) + (set-auto-mode))) + ;; The mode function might have already turned on font-lock. + ;; Do not fontify if the guess mode is fundamental. + (unless (or (symbol-value 'font-lock-mode) + (eq major-mode 'fundamental-mode)) + (font-lock-fontify-buffer)))) ;; By default, XEmacs font-lock uses non-duplicable text ;; properties. This code forces all the text properties ;; to be copied along with the text. @@ -653,14 +662,26 @@ If MODE is not set, try to find mode automatically." ;; id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } (defvar mm-pkcs7-signed-magic - "\x30\x5c\x28\x80\x5c\x7c\x81\x2e\x5c\x7c\x82\x2e\x2e\x5c\x7c\x83\x2e\x2e\ -\x2e\x5c\x29\x06\x09\x5c\x2a\x86\x48\x86\xf7\x0d\x01\x07\x02") + (concat + "0" + "\\(\\(\x80\\)" + "\\|\\(\x81\\(.\\|\n\\)\\{1\\}\\)" + "\\|\\(\x82\\(.\\|\n\\)\\{2\\}\\)" + "\\|\\(\x83\\(.\\|\n\\)\\{3\\}\\)" + "\\)" + "\x06\x09\\*\x86H\x86\xf7\x0d\x01\x07\x02")) ;; id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 } (defvar mm-pkcs7-enveloped-magic - "\x30\x5c\x28\x80\x5c\x7c\x81\x2e\x5c\x7c\x82\x2e\x2e\x5c\x7c\x83\x2e\x2e\ -\x2e\x5c\x29\x06\x09\x5c\x2a\x86\x48\x86\xf7\x0d\x01\x07\x03") + (concat + "0" + "\\(\\(\x80\\)" + "\\|\\(\x81\\(.\\|\n\\)\\{1\\}\\)" + "\\|\\(\x82\\(.\\|\n\\)\\{2\\}\\)" + "\\|\\(\x83\\(.\\|\n\\)\\{3\\}\\)" + "\\)" + "\x06\x09\\*\x86H\x86\xf7\x0d\x01\x07\x03")) (defun mm-view-pkcs7-get-type (handle) (mm-with-unibyte-buffer