From cbb6f138e661b11e03885f00041e6442ed12a6a5 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Wed, 11 Feb 2015 14:34:21 +1100 Subject: [PATCH] shr space widths fixup * lisp/net/shr.el (shr-insert): Make sure the space inserted has the right font (for width). --- lisp/ChangeLog | 5 +++++ lisp/net/shr.el | 51 +++++++++++++++++++++++++------------------------ 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eee6744b15e..7274c9da8f2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2015-02-11 Lars Ingebrigtsen + + * net/shr.el (shr-insert): Make sure the space inserted has the + right font (for width). + 2015-02-10 Lars Ingebrigtsen * net/shr.el (shr-use-fonts): New variable. diff --git a/lisp/net/shr.el b/lisp/net/shr.el index a65f7923f57..a4320853fd1 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -494,31 +494,32 @@ size, and full-buffer size." ((eq shr-folding-mode 'none) (insert text)) (t - (when (and (string-match "\\`[ \t\n\r ]" text) - (not (bolp)) - (not (eq (char-after (1- (point))) ? ))) - (insert " ")) - (let ((start (point)) - (bolp (bolp))) - (insert text) - (save-restriction - (narrow-to-region start (point)) - (goto-char start) - (when (looking-at "[ \t\n\r ]+") - (replace-match "" t t)) - (while (re-search-forward "[ \t\n\r ]+" nil t) - (replace-match " " t t)) - (goto-char (point-max))) - ;; We may have removed everything we inserted if if was just - ;; spaces. - (unless (= start (point)) - ;; Mark all lines that should possibly be folded afterwards. - (when bolp - (shr-mark-fill start)) - (when shr-use-fonts - (put-text-property start (point) - 'face - (or shr-current-font 'variable-pitch)))))))) + (let ((font-start (point))) + (when (and (string-match "\\`[ \t\n\r ]" text) + (not (bolp)) + (not (eq (char-after (1- (point))) ? ))) + (insert " ")) + (let ((start (point)) + (bolp (bolp))) + (insert text) + (save-restriction + (narrow-to-region start (point)) + (goto-char start) + (when (looking-at "[ \t\n\r ]+") + (replace-match "" t t)) + (while (re-search-forward "[ \t\n\r ]+" nil t) + (replace-match " " t t)) + (goto-char (point-max))) + ;; We may have removed everything we inserted if if was just + ;; spaces. + (unless (= font-start (point)) + ;; Mark all lines that should possibly be folded afterwards. + (when bolp + (shr-mark-fill start)) + (when shr-use-fonts + (put-text-property font-start (point) + 'face + (or shr-current-font 'variable-pitch))))))))) (defun shr-fill-lines (start end) (if (<= shr-internal-width 0) -- 2.39.2