diff options
author | Aaron Jensen <aaronjensen@gmail.com> | 2021-01-09 20:43:32 -0600 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2021-01-15 14:04:25 +0200 |
commit | 4dc72dd9deb1c3394ada3de3f52bc7c1ff831ab6 (patch) | |
tree | 2f6adb25275363194fc4fe35d565c8396c168586 /src | |
parent | 66ac17289a5d04366a6b05eb5a105dff408b16b8 (diff) | |
download | emacs-4dc72dd9deb1c3394ada3de3f52bc7c1ff831ab6.tar.gz |
Fix 'window-text-pixel-size' when there are leading/trailing spaces
First, scan to find the first non-whitespace character and then
backtrack to find the beginning of the line. The previous
algorithm always started on the non-whitespace character during
the backtrack, causing it to stop immediately and not actually
find the beginning of the line. The same applies to the end of
line calculation.
* src/xdisp.c: (Fwindow_text_pixel_size): Fix off by one error.
(Bug#45748)
* test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size)
(xdisp-tests--window-text-pixel-size-leading-space)
(xdisp-tests--window-text-pixel-size-trailing-space): New tests.
Diffstat (limited to 'src')
-rw-r--r-- | src/xdisp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 64f401690a6..ea67329cff1 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -10649,9 +10649,10 @@ include the height of both, if present, in the return value. */) bpos = BEGV_BYTE; while (bpos < ZV_BYTE) { - c = fetch_char_advance (&start, &bpos); + c = FETCH_BYTE (bpos); if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r')) break; + inc_both (&start, &bpos); } while (bpos > BEGV_BYTE) { @@ -10680,7 +10681,10 @@ include the height of both, if present, in the return value. */) dec_both (&end, &bpos); c = FETCH_BYTE (bpos); if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r')) - break; + { + inc_both (&end, &bpos); + break; + } } while (bpos < ZV_BYTE) { |