From 6ebbeafc94a35e49fc3a842b5f5fbd7b069ce936 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Wed, 11 Feb 2015 17:24:42 +1100 Subject: [PATCH] Fix
  • indentation in shr (shr-ensure-paragraph): Don't insert a new paragraph as the first item in a

  • . --- lisp/ChangeLog | 2 ++ lisp/net/shr.el | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7ec017c94ec..03b465e8030 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -3,6 +3,8 @@ * net/shr.el (shr-insert): Make sure the space inserted has the right font (for width). (shr-fill-line): Preserve background colours when indenting/folding. + (shr-ensure-paragraph): Don't insert a new paragraph as the first + item in a
  • . 2015-02-10 Lars Ingebrigtsen diff --git a/lisp/net/shr.el b/lisp/net/shr.el index 7a93c3a043c..cf35a1287d6 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -719,23 +719,32 @@ size, and full-buffer size." (defun shr-ensure-paragraph () (unless (bobp) - (if (<= (current-column) shr-indentation) - (unless (save-excursion - (forward-line -1) - (looking-at " *$")) - (insert "\n")) - (if (save-excursion - (beginning-of-line) - ;; If the current line is totally blank, and doesn't even - ;; have any face properties set, then delete the blank - ;; space. - (and (looking-at " *$") - (not (get-text-property (point) 'face)) - (not (= (next-single-property-change (point) 'face nil - (line-end-position)) - (line-end-position))))) - (delete-region (match-beginning 0) (match-end 0)) - (insert "\n\n"))))) + (let ((prefix (get-text-property (line-beginning-position) + 'shr-prefix-length))) + (cond + ((and (bolp) + (save-excursion + (forward-line -1) + (looking-at " *$"))) + ;; We're already at a new paragraph; do nothing. + ) + ((and prefix + (= prefix (- (point) (line-beginning-position)))) + ;; Do nothing; we're at the start of a
  • . + ) + ((save-excursion + (beginning-of-line) + ;; If the current line is totally blank, and doesn't even + ;; have any face properties set, then delete the blank + ;; space. + (and (looking-at " *$") + (not (get-text-property (point) 'face)) + (not (= (next-single-property-change (point) 'face nil + (line-end-position)) + (line-end-position))))) + (delete-region (match-beginning 0) (match-end 0))) + (t + (insert "\n\n")))))) (defun shr-indent () (when (> shr-indentation 0) @@ -1406,6 +1415,7 @@ The preference is a float determined from `shr-prefer-media-type'." (shr-string-pixel-width bullet)))) (put-text-property start (1+ start) 'shr-continuation-indentation shr-indentation) + (put-text-property start (1+ start) 'shr-prefix-length (length bullet)) (shr-generic dom))))) (defun shr-mark-fill (start) -- 2.39.2