[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 55aad592e17: Improve computation of indent depth in SHR and 'visu
From: |
Jim Porter |
Subject: |
master 55aad592e17: Improve computation of indent depth in SHR and 'visual-wrap-prefix-mode' |
Date: |
Sun, 25 Aug 2024 13:11:28 -0400 (EDT) |
branch: master
commit 55aad592e177dc2c503ebe9ad2a46e227683315e
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>
Improve computation of indent depth in SHR and 'visual-wrap-prefix-mode'
Now, we get the average-width of the current font using
'string-pixel-width' and a specified space display spec, which doesn't
require the buffer to be displayed in a window (bug#72771).
* lisp/net/shr.el (shr-indent):
* lisp/visual-wrap.el (visual-wrap--content-prefix): Fix getting the
font when the buffer isn't displayed in a window.
(visual-wrap-fill-context-prefix): Fix indentation.
---
lisp/net/shr.el | 22 +++++++++++-----------
lisp/visual-wrap.el | 20 +++++++-------------
2 files changed, 18 insertions(+), 24 deletions(-)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index b9ac9f0c8c0..cd0e482aee7 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -1051,17 +1051,17 @@ When `shr-fill-text' is nil, only indent."
(if (not shr-use-fonts)
(insert-char ?\s shr-indentation)
(insert ?\s)
- (put-text-property
- (1- (point)) (point) 'display
- ;; Set the specified space width in terms of the default width
- ;; of the current face, like (N . width). That way, the
- ;; indentation is calculated correctly when using
- ;; `text-scale-adjust'.
- `(space :width (,(if-let ((font (font-at (1- (point))))
- (info (query-font font)))
- (/ (float shr-indentation) (aref info 7))
- shr-indentation)
- . width))))
+ ;; Set the specified space width in units of the average-width
+ ;; of the current font, like (N . width). That way, the
+ ;; indentation is calculated correctly when using
+ ;; `text-scale-adjust'.
+ (let ((avg-space (propertize (buffer-substring (1- (point)) (point))
+ 'display '(space :width 1))))
+ (put-text-property
+ (1- (point)) (point) 'display
+ `(space :width (,(/ (float shr-indentation)
+ (string-pixel-width avg-space (current-buffer)))
+ . width)))))
(put-text-property start (+ (point) prefix)
'shr-prefix-length (+ prefix (- (point) start))))))
diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el
index 902a9e41c5e..76276c0f474 100644
--- a/lisp/visual-wrap.el
+++ b/lisp/visual-wrap.el
@@ -160,20 +160,14 @@ PREFIX was empty."
prefix)
(t
;; Otherwise, we want the prefix to be whitespace of the same width
- ;; as the first-line prefix. If possible, compute the real pixel
- ;; width of the first-line prefix in canonical-width characters.
- ;; This is useful if the first-line prefix uses some very-wide
- ;; characters.
- (if-let ((font (font-at position))
- (info (query-font font)))
+ ;; as the first-line prefix. We want to return an integer width (in
+ ;; units of the font's average-width) large enough to fit the
+ ;; first-line prefix.
+ (let ((avg-space (propertize (buffer-substring position (1+ position))
+ 'display '(space :width 1))))
(max (string-width prefix)
(ceiling (string-pixel-width prefix (current-buffer))
- (aref info 7)))
- ;; We couldn't get the font, so we're in a terminal and
- ;; `string-pixel-width' is really returning the number of columns.
- ;; (This is different from `string-width', since that doesn't
- ;; respect specified spaces.)
- (string-pixel-width prefix)))))
+ (string-pixel-width avg-space (current-buffer))))))))
(defun visual-wrap-fill-context-prefix (beg end)
"Compute visual wrap prefix from text between BEG and END.
@@ -189,7 +183,7 @@ by `visual-wrap-extra-indent'."
;; make much sense (and is positively harmful in
;; taskpaper-mode where paragraph-start matches everything).
(or (let ((paragraph-start regexp-unmatchable))
- (fill-context-prefix beg end))
+ (fill-context-prefix beg end))
;; Note: fill-context-prefix may return nil; See:
;; http://article.gmane.org/gmane.emacs.devel/156285
""))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 55aad592e17: Improve computation of indent depth in SHR and 'visual-wrap-prefix-mode',
Jim Porter <=