Merge branch 'master' of https://git.gnus.org/gnus into tzz-auth-source-rewrite
[gnus] / lisp / shr.el
index 48aee40..5b4e6c7 100644 (file)
@@ -82,30 +82,6 @@ used."
                 (const   :tag "Use the width of the window" nil))
   :group 'shr)
 
-(defface shr-tag-h1 '((t (:bold t :height 2.2)))
-  "Face used for H1 tags."
-  :group 'shr)
-
-(defface shr-tag-h2 '((t (:bold t :height 2.0)))
-  "Face used for H2 tags."
-  :group 'shr)
-
-(defface shr-tag-h3 '((t (:bold t :height 1.8)))
-  "Face used for H3 tags."
-  :group 'shr)
-
-(defface shr-tag-h4 '((t (:bold t :height 1.6)))
-  "Face used for H4 tags."
-  :group 'shr)
-
-(defface shr-tag-h5 '((t (:bold t :height 1.4)))
-  "Face used for H5 tags."
-  :group 'shr)
-
-(defface shr-tag-h6 '((t (:bold t :height 1.2)))
-  "Face used for H6 tags."
-  :group 'shr)
-
 (defvar shr-content-function nil
   "If bound, this should be a function that will return the content.
 This is used for cid: URLs, and the function is called with the
@@ -625,7 +601,8 @@ ones, in case fg and bg are nil."
        (when fg
          (shr-put-color start end :foreground (cadr new-colors)))
        (when bg
-         (shr-put-color start end :background (car new-colors)))))))
+         (shr-put-color start end :background (car new-colors))))
+      new-colors)))
 
 ;; Put a color in the region, but avoid putting colors on on blank
 ;; text at the start of the line, and the newline at the end, to avoid
@@ -636,14 +613,16 @@ ones, in case fg and bg are nil."
   (save-excursion
     (goto-char start)
     (while (< (point) end)
-      (when (bolp)
+      (when (and (bolp)
+                (not (eq type :background)))
        (skip-chars-forward " "))
       (when (> (line-end-position) (point))
        (shr-put-color-1 (point) (min (line-end-position) end) type color))
       (if (< (line-end-position) end)
          (forward-line 1)
        (goto-char end)))
-    (when (eq type :background)
+    (when (and (eq type :background)
+              (= shr-table-depth 0))
       (shr-expand-newlines start end color))))
 
 (defun shr-expand-newlines (start end color)
@@ -671,8 +650,9 @@ ones, in case fg and bg are nil."
                         (concat
                          (mapconcat
                           (lambda (overlay)
-                            (let ((string (getf (overlay-properties overlay)
-                                                'before-string)))
+                            (let ((string (plist-get
+                                           (overlay-properties overlay)
+                                           'before-string)))
                               (if (not string)
                                   ""
                                 (overlay-put overlay 'before-string "")
@@ -691,7 +671,8 @@ ones, in case fg and bg are nil."
       (dolist (overlay overlays)
        (setq previous-width
              (+ previous-width
-                (length (getf (overlay-properties overlay) 'before-string)))))
+                (length (plist-get (overlay-properties overlay)
+                                   'before-string)))))
       (+ width previous-width))))
 
 (defun shr-put-color-1 (start end type color)
@@ -906,22 +887,22 @@ ones, in case fg and bg are nil."
   (shr-generic cont))
 
 (defun shr-tag-h1 (cont)
-  (shr-heading cont 'shr-tag-h1))
+  (shr-heading cont 'bold 'underline))
 
 (defun shr-tag-h2 (cont)
-  (shr-heading cont 'shr-tag-h2))
+  (shr-heading cont 'bold))
 
 (defun shr-tag-h3 (cont)
-  (shr-heading cont 'shr-tag-h3))
+  (shr-heading cont 'italic))
 
 (defun shr-tag-h4 (cont)
-  (shr-heading cont 'shr-tag-h4))
+  (shr-heading cont))
 
 (defun shr-tag-h5 (cont)
-  (shr-heading cont 'shr-tag-h5))
+  (shr-heading cont))
 
 (defun shr-tag-h6 (cont)
-  (shr-heading cont 'shr-tag-h6))
+  (shr-heading cont))
 
 (defun shr-tag-hr (cont)
   (shr-ensure-newline)
@@ -1075,8 +1056,11 @@ ones, in case fg and bg are nil."
          ;; possibly.
          (dotimes (i (- height (length lines)))
            (end-of-line)
-           (insert (make-string (string-width (car lines)) ? )
-                   shr-table-vertical-line)
+           (let ((start (point)))
+             (insert (make-string (string-width (car lines)) ? )
+                     shr-table-vertical-line)
+             (when (nth 4 column)
+               (shr-put-color start (1- (point)) :background (nth 4 column))))
            (forward-line 1)))))
     (shr-insert-table-ruler widths)))
 
@@ -1143,7 +1127,7 @@ ones, in case fg and bg are nil."
          (fgcolor (cdr (assq :fgcolor cont)))
          (style (cdr (assq :style cont)))
          (shr-stylesheet shr-stylesheet)
-         overlays)
+         overlays actual-colors)
       (when style
        (setq style (and (string-match "color" style)
                         (shr-parse-style style))))
@@ -1193,17 +1177,19 @@ ones, in case fg and bg are nil."
              (end-of-line)
              (when (> (- width (current-column)) 0)
                (insert (make-string (- width (current-column)) ? )))
-             (forward-line 1))))
-       (when style
-         (shr-colorize-region
-          (point-min) (point-max)
-          (cdr (assq 'color shr-stylesheet))
-          (cdr (assq 'background-color shr-stylesheet))))
+             (forward-line 1)))
+         (when style
+           (setq actual-colors
+                 (shr-colorize-region
+                  (point-min) (point-max)
+                  (cdr (assq 'color shr-stylesheet))
+                  (cdr (assq 'background-color shr-stylesheet))))))
        (if fill
            (list max
                  (count-lines (point-min) (point-max))
                  (split-string (buffer-string) "\n")
-                 (shr-collect-overlays))
+                 (shr-collect-overlays)
+                 (car actual-colors))
          (list max
                (shr-natural-width)))))))