Commit c5aed7bd authored by Katsumi Yamaoka's avatar Katsumi Yamaoka
Browse files

gnus-art.el, mm-uu.el: Misc improvements for displaying MIME parts

* gnus-art.el (gnus-mime-inline-part, gnus-mm-display-part):
Work for the last MIME part in an article.
(gnus-mime-display-single): Suppress excessive newlines between parts.

* mm-uu.el (mm-uu-dissect): Assume that separators may be accompanied
by leading or trailing newline.
parent f0036ec2
2014-05-14 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-mime-inline-part, gnus-mm-display-part):
Work for the last MIME part in an article.
(gnus-mime-display-single): Suppress excessive newlines between parts.
* mm-uu.el (mm-uu-dissect): Assume that separators may be accompanied
by leading or trailing newline.
2014-05-09 Katsumi Yamaoka <yamaoka@jpl.org>
 
* gnus-art.el (gnus-mm-display-part): Don't put article out of sight
......
......@@ -5316,7 +5316,8 @@ Compressed files like .gz and .bz2 are decompressed."
(when (= b (prog1
btn
(setq btn (previous-single-property-change
(next-single-property-change btn 'gnus-data)
(or (next-single-property-change btn 'gnus-data)
(point-max))
'gnus-data))))
(setq b btn))
(if (and (not arg) (mm-handle-undisplayer handle))
......@@ -5353,12 +5354,14 @@ Compressed files like .gz and .bz2 are decompressed."
(if (featurep 'emacs)
(delete-region
(point)
(text-property-any (point) (point-max) 'gnus-data nil))
(or (text-property-any (point) (point-max) 'gnus-data nil)
(point-max)))
(let* ((end (text-property-any (point) (point-max) 'gnus-data nil))
(annots (annotations-at end)))
(delete-region (point)
;; FIXME: why isn't this simply `end'?
(if annots (1+ end) end))
(if end
(if annots (1+ end) end)
(point-max)))
(dolist (annot annots)
(set-extent-endpoints annot (point) (point)))))
(unless (search-backward "\n\n" nil t)
......@@ -5691,7 +5694,8 @@ all parts."
(select-window win)
(goto-char point)))
(setq point (previous-single-property-change
(next-single-property-change point 'gnus-data)
(or (next-single-property-change point 'gnus-data)
(point-max))
'gnus-data))
(if (mm-handle-displayed-p handle)
;; This will remove the part.
......@@ -5728,12 +5732,15 @@ all parts."
(gnus-insert-mime-button handle id (list (mm-handle-displayed-p handle)))
(if (featurep 'emacs)
(delete-region
(point) (text-property-any (point) (point-max) 'gnus-data nil))
(point)
(or (text-property-any (point) (point-max) 'gnus-data nil)
(point-max)))
(let* ((end (text-property-any (point) (point-max) 'gnus-data nil))
(annots (annotations-at end)))
(delete-region (point)
;; FIXME: why isn't this simply `end'?
(if annots (1+ end) end))
(if end
(if annots (1+ end) end)
(point-max)))
(dolist (annot annots)
(set-extent-endpoints annot (point) (point)))))
(unless (search-backward "\n\n" nil t)
......@@ -6036,9 +6043,6 @@ If nil, don't show those extra buttons."
(eq id gnus-mime-buttonized-part-id))
(gnus-insert-mime-button
handle id (list (or display (and not-attachment text)))))
(gnus-article-insert-newline)
(when (or display (and text not-attachment))
(forward-line -1))
(setq beg (point))
(cond
(display
......@@ -6048,12 +6052,18 @@ If nil, don't show those extra buttons."
(set-buffer gnus-summary-buffer)
(error))
gnus-newsgroup-ignored-charsets)))
(gnus-bind-safe-url-regexp (mm-display-part handle t)))
(goto-char (point-max)))
(gnus-bind-safe-url-regexp (mm-display-part handle t))))
((and text not-attachment)
(gnus-article-insert-newline)
(mm-display-inline handle)
(goto-char (point-max))))
(mm-display-inline handle)))
(goto-char (point-max))
(if (string-match "\\`image/" type)
(gnus-article-insert-newline)
(if (prog1
(= (skip-chars-backward "\n") -1)
(forward-char 1))
(gnus-article-insert-newline)
(put-text-property (point) (point-max) 'gnus-undeletable t))
(goto-char (point-max)))
;; Do highlighting.
(save-excursion
(save-restriction
......
......@@ -673,22 +673,34 @@ value of `mm-uu-text-plain-type'."
(goto-char text-start)
(re-search-forward "." start-point t)))
(push
(mm-make-handle (mm-uu-copy-to-buffer text-start start-point)
mm-uu-text-plain-type)
(mm-make-handle
(mm-uu-copy-to-buffer
text-start
;; A start-separator is likely accompanied by
;; a leading newline.
(if (and (eq (char-before start-point) ?\n)
(eq (char-before (1- start-point)) ?\n))
(1- start-point)
start-point))
mm-uu-text-plain-type)
result))
(push
(funcall (mm-uu-function-extract entry))
result)
(goto-char (setq text-start end-point))))
(when result
(if (and (> (point-max) (1+ text-start))
(save-excursion
(goto-char text-start)
(re-search-forward "." nil t)))
(push
(mm-make-handle (mm-uu-copy-to-buffer text-start (point-max))
mm-uu-text-plain-type)
result))
(goto-char text-start)
(when (re-search-forward "." nil t)
(push (mm-make-handle
(mm-uu-copy-to-buffer
;; An end-separator is likely accompanied by
;; a trailing newline.
(if (eq (char-after text-start) ?\n)
(1+ text-start)
text-start)
(point-max))
mm-uu-text-plain-type)
result))
(setq result (cons "multipart/mixed" (nreverse result))))
result)))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment