X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/294127e7d59a5d23a32561716a1b192db410e12f..0e963201d03d9229bb8ac4323291d2b0119526ed:/lisp/gnus/mm-decode.el diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index f03b9c9b48..79fc74a13c 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1,6 +1,6 @@ ;;; mm-decode.el --- Functions for decoding MIME things -;; Copyright (C) 1998-2015 Free Software Foundation, Inc. +;; Copyright (C) 1998-2016 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -393,7 +393,7 @@ enables you to choose manually one of two types those mails include." (defcustom mm-inline-large-images nil "If t, then all images fit in the buffer. -If 'resize, try to resize the images so they fit." +If `resize', try to resize the images so they fit." :type '(radio (const :tag "Inline large images as they are." t) (const :tag "Resize large images." resize) @@ -788,6 +788,14 @@ MIME-Version header before proceeding." (autoload 'mailcap-parse-mailcaps "mailcap") (autoload 'mailcap-mime-info "mailcap") +(defun mm-head-p (&optional point) + "Return non-nil if point is in the article header." + (let ((point (or point (point)))) + (save-excursion + (goto-char point) + (and (not (re-search-backward "^$" nil t)) + (re-search-forward "^$" nil t))))) + (defun mm-display-part (handle &optional no-default force) "Display the MIME part represented by HANDLE. Returns nil if the part is removed; inline if displayed inline; @@ -821,6 +829,10 @@ external if displayed external." 'inline) ((and (mm-inlinable-p ehandle) (mm-inlined-p ehandle)) + (when force + (if (mm-head-p) + (re-search-forward "^$" nil t) + (forward-line 1))) (mm-display-inline handle) 'inline) ((or method @@ -843,7 +855,7 @@ external if displayed external." (concat "using external program \"" (format method filename) "\"") - (format + (gnus-format-message "by calling `%s' on the contents)" method)) "? ")))))) (if external @@ -889,7 +901,7 @@ external if displayed external." (when (and (boundp 'gnus-summary-buffer) (bufferp gnus-summary-buffer) (buffer-name gnus-summary-buffer)) - ;; So that we pop back to the right place, sortof. + ;; So that we pop back to the right place, sort of. (switch-to-buffer gnus-summary-buffer) (switch-to-buffer mm)) (delete-other-windows) @@ -1407,7 +1419,7 @@ Return t if meta tag is added or replaced." (goto-char (point-min)) (if (re-search-forward "\ ]+\\)\\)?[^>]*>" nil t) +text/\\(\\sw+\\)\\(?:;\\s-*charset=\\([^\"'>]+\\)\\)?[^>]*>" nil t) (if (and (not force-charset) (match-beginning 2) (string-match "\\`html\\'" (match-string 1))) @@ -1812,9 +1824,10 @@ If RECURSIVE, search recursively." (not (mm-long-lines-p 76)))))) (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (declare-function shr-insert-document "shr" (dom)) (defvar shr-blocked-images) +(defvar shr-use-fonts) (defvar gnus-inhibit-images) (autoload 'gnus-blocked-images "gnus-art") @@ -1822,7 +1835,10 @@ If RECURSIVE, search recursively." ;; Require since we bind its variables. (require 'shr) (let ((article-buffer (current-buffer)) - (shr-width fill-column) + (shr-width (if (and (boundp 'shr-use-fonts) + shr-use-fonts) + nil + fill-column)) (shr-content-function (lambda (id) (let ((handle (mm-get-content-id id))) (when handle @@ -1876,7 +1892,7 @@ If RECURSIVE, search recursively." handle `(lambda () (let ((inhibit-read-only t)) - (delete-region ,(copy-marker (point-min) t) + (delete-region ,(point-min-marker) ,(point-max-marker)))))))) (defvar shr-map) @@ -1896,6 +1912,8 @@ If RECURSIVE, search recursively." :keymap shr-map (get-text-property start 'shr-url)) (put-text-property start end 'local-map nil) + (dolist (overlay (overlays-at start)) + (overlay-put overlay 'face nil)) (setq start end))))) (defun mm-handle-filename (handle)