unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
@ 2021-01-09 15:43 Aaron Jensen
  2021-01-09 15:57 ` Aaron Jensen
                   ` (3 more replies)
  0 siblings, 4 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 15:43 UTC (permalink / raw)
  To: 45748

From emacs -Q:

Create a buffer with only the following text and no trailing newline
(note the leading space):

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

M-x fit-frame-to-buffer

The frame will be resized to the width of the X's, not including the
leading space, causing the line to wrap.

If the leading space is removed, it works as expected.

Any number of leading spaces are ignored, as are trailing spaces.

This has practical applications with company-posframe, which uses
sometimes one line child windows to show completion options and has
leading and trailing spaces around each completion.

In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin19.6.0, NS
appkit-1894.60 Version 10.15.7 (Build 19H114))
 of 2021-01-08 built on aaron-sub.local
Repository revision: d1c5e7afb1ad9890d925e8c1a5392b701a754dd5
Repository branch: master
Windowing system distributor 'Apple', version 10.3.1894
System Description:  Mac OS X 10.15.7


Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 15:43 bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces Aaron Jensen
@ 2021-01-09 15:57 ` Aaron Jensen
  2021-01-09 16:27   ` Aaron Jensen
  2021-01-09 17:07   ` martin rudalics
  2021-01-16 17:12 ` bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode Aaron Jensen
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 15:57 UTC (permalink / raw)
  To: 45748

I believe the problem is with:

(window-text-pixel-size nil t)

The FROM of t causes window-text-pixel-size to ignore leading spaces.
A TO of t, causes it to ignore trailing spaces. fit-frame-to-buffer
passes both as t. This is hardcoded unless you use
fit-frame-to-buffer-1

I can't say if window-text-pixel-size is behaving as expected or not.

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 15:57 ` Aaron Jensen
@ 2021-01-09 16:27   ` Aaron Jensen
  2021-01-09 17:07     ` martin rudalics
  2021-01-09 17:44     ` Eli Zaretskii
  2021-01-09 17:07   ` martin rudalics
  1 sibling, 2 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 16:27 UTC (permalink / raw)
  To: 45748

On Sat, Jan 9, 2021 at 9:57 AM Aaron Jensen <aaronjensen@gmail.com> wrote:
>
> I believe the problem is with:
>
> (window-text-pixel-size nil t)
>
> The FROM of t causes window-text-pixel-size to ignore leading spaces.
> A TO of t, causes it to ignore trailing spaces. fit-frame-to-buffer
> passes both as t. This is hardcoded unless you use
> fit-frame-to-buffer-1
>
> I can't say if window-text-pixel-size is behaving as expected or not.

The problematic code appears to be here in window-text-pixel-size:

else if (EQ (from, Qt))
  {
    start = BEGV;
    bpos = BEGV_BYTE;
    while (bpos < ZV_BYTE)
      {
c = fetch_char_advance (&start, &bpos);
if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
  break;
      }
    while (bpos > BEGV_BYTE)
      {
dec_both (&start, &bpos);
c = FETCH_BYTE (bpos);
if (!(c == ' ' || c == '\t'))
  break;
      }
  }

The second loop looks like it's attempting to backtrack to the
beginning of the line, but FETCH_BYTE (bpos) after a dec_both returns
the same character that the first loop ended on. In other words, start
and bpos are not in sync, or the way that FETCH_BYTE works is
different. If I subtract 1 from bpos when calling FETCH_BYTE, it works
as expected.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 15:57 ` Aaron Jensen
  2021-01-09 16:27   ` Aaron Jensen
@ 2021-01-09 17:07   ` martin rudalics
  1 sibling, 0 replies; 34+ messages in thread
From: martin rudalics @ 2021-01-09 17:07 UTC (permalink / raw)
  To: Aaron Jensen, 45748

 > I believe the problem is with:
 >
 > (window-text-pixel-size nil t)
 >
 > The FROM of t causes window-text-pixel-size to ignore leading spaces.
 > A TO of t, causes it to ignore trailing spaces. fit-frame-to-buffer
 > passes both as t. This is hardcoded unless you use
 > fit-frame-to-buffer-1
 >
 > I can't say if window-text-pixel-size is behaving as expected or not.

Neither can I but the outcome is annoying.  What would you suggest to
do?  I ask because with

  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

the leading space on the first line must be shown.  Maybe I don't see an
all too obvious fix here.

martin





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 16:27   ` Aaron Jensen
@ 2021-01-09 17:07     ` martin rudalics
  2021-01-09 17:44       ` Aaron Jensen
  2021-01-09 17:44     ` Eli Zaretskii
  1 sibling, 1 reply; 34+ messages in thread
From: martin rudalics @ 2021-01-09 17:07 UTC (permalink / raw)
  To: Aaron Jensen, 45748

 > The problematic code appears to be here in window-text-pixel-size:
 >
 > else if (EQ (from, Qt))
 >    {
 >      start = BEGV;
 >      bpos = BEGV_BYTE;
 >      while (bpos < ZV_BYTE)
 >        {
 > c = fetch_char_advance (&start, &bpos);
 > if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
 >    break;
 >        }
 >      while (bpos > BEGV_BYTE)
 >        {
 > dec_both (&start, &bpos);
 > c = FETCH_BYTE (bpos);
 > if (!(c == ' ' || c == '\t'))
 >    break;
 >        }
 >    }
 >
 > The second loop looks like it's attempting to backtrack to the
 > beginning of the line, but FETCH_BYTE (bpos) after a dec_both returns
 > the same character that the first loop ended on. In other words, start
 > and bpos are not in sync, or the way that FETCH_BYTE works is
 > different. If I subtract 1 from bpos when calling FETCH_BYTE, it works
 > as expected.

Do you mean the first dec_both skips too much or not enough?  That code
was broken when I wrote it initially, someone fixed the char/byte issue
later and now I'm too silly to understand it.

martin





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 16:27   ` Aaron Jensen
  2021-01-09 17:07     ` martin rudalics
@ 2021-01-09 17:44     ` Eli Zaretskii
  2021-01-09 17:49       ` Aaron Jensen
  1 sibling, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-09 17:44 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 9 Jan 2021 10:27:12 -0600
> 
> On Sat, Jan 9, 2021 at 9:57 AM Aaron Jensen <aaronjensen@gmail.com> wrote:
> >
> > I believe the problem is with:
> >
> > (window-text-pixel-size nil t)

You mean with

  (window-text-pixel-size t t)

right?

> > The FROM of t causes window-text-pixel-size to ignore leading spaces.
> > A TO of t, causes it to ignore trailing spaces. fit-frame-to-buffer
> > passes both as t. This is hardcoded unless you use
> > fit-frame-to-buffer-1

??? fit-frame-to-buffer always calls fit-frame-to-buffer-1, sow hat do
you mean by "unless"?

> The problematic code appears to be here in window-text-pixel-size:
> 
> else if (EQ (from, Qt))
>   {
>     start = BEGV;
>     bpos = BEGV_BYTE;
>     while (bpos < ZV_BYTE)
>       {
> c = fetch_char_advance (&start, &bpos);
> if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
>   break;
>       }
>     while (bpos > BEGV_BYTE)
>       {
> dec_both (&start, &bpos);
> c = FETCH_BYTE (bpos);
> if (!(c == ' ' || c == '\t'))
>   break;
>       }
>   }
> 
> The second loop looks like it's attempting to backtrack to the
> beginning of the line, but FETCH_BYTE (bpos) after a dec_both returns
> the same character that the first loop ended on.

No, it doesn't, it returns the byte at bpos after decrementing bpos.
So it's the character before that.

> In other words, start and bpos are not in sync

??? FETCH_BYTE doesn't change bpos, so if it was in sync with start
before FETCH_BYTE, it is still in sync after it.  So I don't think I
understand what you mean here.

Can you elaborate on your findings, please?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 17:07     ` martin rudalics
@ 2021-01-09 17:44       ` Aaron Jensen
  2021-01-09 17:55         ` Aaron Jensen
  2021-01-09 18:03         ` Eli Zaretskii
  0 siblings, 2 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 17:44 UTC (permalink / raw)
  To: martin rudalics; +Cc: 45748

On Sat, Jan 9, 2021 at 11:07 AM martin rudalics <rudalics@gmx.at> wrote:
> Do you mean the first dec_both skips too much or not enough?  That code
> was broken when I wrote it initially, someone fixed the char/byte issue
> later and now I'm too silly to understand it.

It doesn't skip enough. I believe this fixes both the leading and
trailing space problems:

diff --git a/src/xdisp.c b/src/xdisp.c
index 6a4304d194..20e7ca3a1e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10652,7 +10652,10 @@ DEFUN ("window-text-pixel-size",
Fwindow_text_pixel_size, Swindow_text_pixel_siz
  {
    c = fetch_char_advance (&start, &bpos);
    if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
-     break;
+            {
+              dec_both (&start, &bpos);
+       break;
+            }
  }
       while (bpos > BEGV_BYTE)
  {
@@ -10680,12 +10683,17 @@ DEFUN ("window-text-pixel-size",
Fwindow_text_pixel_size, Swindow_text_pixel_siz
  {
    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)
  {
    c = fetch_char_advance (&end, &bpos);
    if (!(c == ' ' || c == '\t'))
      break;
  }

The problem is that the first loop leaves the pointer pointing to the
next character and it's only back tracked once.





^ permalink raw reply related	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 17:44     ` Eli Zaretskii
@ 2021-01-09 17:49       ` Aaron Jensen
  0 siblings, 0 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 17:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 45748

On Sat, Jan 9, 2021 at 11:44 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> You mean with
>
>   (window-text-pixel-size t t)
>
> right?

Yes, sorry bad copy/paste.

> ??? fit-frame-to-buffer always calls fit-frame-to-buffer-1, sow hat do
> you mean by "unless"?

I mean unless you call fit-frame-to-buffer-1 passing nil for from and
to, which I believe is the most likely desired behavior for something
like posframe, but I'm not the maintainer of that so I couldn't say
for certain.


> > The second loop looks like it's attempting to backtrack to the
> > beginning of the line, but FETCH_BYTE (bpos) after a dec_both returns
> > the same character that the first loop ended on.
>
> No, it doesn't, it returns the byte at bpos after decrementing bpos.
> So it's the character before that.

Maybe we're just getting hung up on my wording. After
fetch_char_advance, bpos points to the byte of the character after
what was returned from fetch_char_advance. If you then dec_both and
FETCH_BYTE, you will get the same character returned from the last
time fetch_char_advance was called, which was likely not the intent.

> > In other words, start and bpos are not in sync
>
> ??? FETCH_BYTE doesn't change bpos, so if it was in sync with start
> before FETCH_BYTE, it is still in sync after it.  So I don't think I
> understand what you mean here.
>
> Can you elaborate on your findings, please?

Yeah, I was mistaken on that point. They stay in sync. They both
needed to backtrack an extra time. See my patch in the email I sent
right before this one.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 17:44       ` Aaron Jensen
@ 2021-01-09 17:55         ` Aaron Jensen
  2021-01-09 18:14           ` Eli Zaretskii
  2021-01-09 18:03         ` Eli Zaretskii
  1 sibling, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-09 17:55 UTC (permalink / raw)
  To: martin rudalics; +Cc: 45748

On Sat, Jan 9, 2021 at 11:44 AM Aaron Jensen <aaronjensen@gmail.com> wrote:
>
> diff --git a/src/xdisp.c b/src/xdisp.c
> index 6a4304d194..20e7ca3a1e 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -10652,7 +10652,10 @@ DEFUN ("window-text-pixel-size",
> Fwindow_text_pixel_size, Swindow_text_pixel_siz
>   {

It might actually be easier to read and understand if it was written
without fetch_char_advance and just used inc_both, dec_both and
FETCH_BYTE. I don't know if fetch_char_advance is doing something that
that combination wouldn't do, however, so I can't say if that'd be
safe or not.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 17:44       ` Aaron Jensen
  2021-01-09 17:55         ` Aaron Jensen
@ 2021-01-09 18:03         ` Eli Zaretskii
  1 sibling, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-09 18:03 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 9 Jan 2021 11:44:46 -0600
> Cc: 45748@debbugs.gnu.org
> 
> diff --git a/src/xdisp.c b/src/xdisp.c
> index 6a4304d194..20e7ca3a1e 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -10652,7 +10652,10 @@ DEFUN ("window-text-pixel-size",
> Fwindow_text_pixel_size, Swindow_text_pixel_siz
>   {
>     c = fetch_char_advance (&start, &bpos);
>     if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
> -     break;
> +            {
> +              dec_both (&start, &bpos);
> +       break;
> +            }
>   }

This increments position, then decrements it, which is sub-optimal.

>   {
>     dec_both (&end, &bpos);
>     c = FETCH_BYTE (bpos);
>     if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
> -     break;
> +            {
> +              inc_both (&end, &bpos);
> +       break;
> +            }
>   }

Same here.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 17:55         ` Aaron Jensen
@ 2021-01-09 18:14           ` Eli Zaretskii
  2021-01-10  2:56             ` Aaron Jensen
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-09 18:14 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 9 Jan 2021 11:55:06 -0600
> Cc: 45748@debbugs.gnu.org
> 
> It might actually be easier to read and understand if it was written
> without fetch_char_advance and just used inc_both, dec_both and
> FETCH_BYTE.

Yes, probably.

But before we do any changes here, we need a test suite.  Would you
mind adding the necessary tests to test/src/xdisp-tests.el?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-09 18:14           ` Eli Zaretskii
@ 2021-01-10  2:56             ` Aaron Jensen
  2021-01-10 16:05               ` martin rudalics
                                 ` (2 more replies)
  0 siblings, 3 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-10  2:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: martin rudalics, 45748

[-- Attachment #1: Type: text/plain, Size: 1177 bytes --]

On Sat, Jan 9, 2021 at 12:14 PM Eli Zaretskii <eliz@gnu.org> wrote:
> Yes, probably.
>
> But before we do any changes here, we need a test suite.  Would you
> mind adding the necessary tests to test/src/xdisp-tests.el?

Okay, I added a few basic tests for this case. I don't know if that's
the best way to test it, but it's what I could figure out.

The implementation bypasses the extra backtrack for the FROM, but the
algorithm for the TO is the same as I first submitted. In that case,
it's not really an extra backtrack since I have to dec to read the
byte. If I had access to dec_bytepos declared in syntax.c, I think I
could use that to avoid the extra backtrack (I'd fetch the dec_bytepos
(bpos)) and test that and then only move the pointers if not breaking
from the loop.

I left the fetch_char_advance in the TO algorithm since it didn't seem
necessary to replace it with separate fetch/inc_both.

This could be done w/o the backtracking entirely by keeping two
pointers, but that's more complicated, probably not much more
efficient (if at all) and this will likely never be called in a tight
loop.

Let me know how this looks and if you want me to make any tweaks.

[-- Attachment #2: 0001-Fix-window-text-pixel-size-with-leading-trailing-spa.patch --]
[-- Type: application/octet-stream, Size: 3434 bytes --]

From 595937263d77bf392a32961119e0ce7f8754525b Mon Sep 17 00:00:00 2001
From: Aaron Jensen <aaronjensen@gmail.com>
Date: Sat, 9 Jan 2021 20:43:32 -0600
Subject: [PATCH] Fix window-text-pixel-size with leading/trailing spaces
 (bug#45748)

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
* test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size): New test
(xdisp-tests--window-text-pixel-size-leading-space): New test
(xdisp-tests--window-text-pixel-size-trailing-space): New test
---
 src/xdisp.c             |  8 ++++++--
 test/src/xdisp-tests.el | 30 ++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index 6a4304d194..6c8bd346c0 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10650,9 +10650,10 @@ DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_siz
       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)
 	{
@@ -10681,7 +10682,10 @@ DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_siz
 	  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)
 	{
diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el
index d13ce77a99..ec96d777ff 100644
--- a/test/src/xdisp-tests.el
+++ b/test/src/xdisp-tests.el
@@ -72,4 +72,34 @@ xdisp-tests--minibuffer-scroll
     (should (equal (nth 0 posns) (nth 1 posns)))
     (should (equal (nth 1 posns) (nth 2 posns)))))
 
+(ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748
+  (with-temp-buffer
+    (insert "xxx")
+    (let* ((window
+            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
+          (char-width (frame-char-width))
+          (size (window-text-pixel-size nil t t)))
+      (delete-frame (window-frame window))
+      (should (equal (/ (car size) char-width) 3)))))
+
+(ert-deftest xdisp-tests--window-text-pixel-size-leading-space () ;; bug#45748
+  (with-temp-buffer
+    (insert " xx")
+    (let* ((window
+            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
+          (char-width (frame-char-width))
+          (size (window-text-pixel-size nil t t)))
+      (delete-frame (window-frame window))
+      (should (equal (/ (car size) char-width) 3)))))
+
+(ert-deftest xdisp-tests--window-text-pixel-size-trailing-space () ;; bug#45748
+  (with-temp-buffer
+    (insert "xx ")
+    (let* ((window
+            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
+          (char-width (frame-char-width))
+          (size (window-text-pixel-size nil t t)))
+      (delete-frame (window-frame window))
+      (should (equal (/ (car size) char-width) 3)))))
+
 ;;; xdisp-tests.el ends here
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10  2:56             ` Aaron Jensen
@ 2021-01-10 16:05               ` martin rudalics
  2021-01-10 17:31                 ` Aaron Jensen
  2021-01-13  4:34               ` Aaron Jensen
  2021-01-15 12:11               ` Eli Zaretskii
  2 siblings, 1 reply; 34+ messages in thread
From: martin rudalics @ 2021-01-10 16:05 UTC (permalink / raw)
  To: Aaron Jensen, Eli Zaretskii; +Cc: 45748

 > Let me know how this looks and if you want me to make any tweaks.

  	  dec_both (&end, &bpos);
  	  c = FETCH_BYTE (bpos);
  	  if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))

Sorry but on that last line I have

	  if (!(c == ' ' || c == '\t'))

or am I confused?

martin





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10 16:05               ` martin rudalics
@ 2021-01-10 17:31                 ` Aaron Jensen
  2021-01-10 17:49                   ` martin rudalics
  0 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-10 17:31 UTC (permalink / raw)
  To: martin rudalics; +Cc: 45748

On Sun, Jan 10, 2021 at 10:05 AM martin rudalics <rudalics@gmx.at> wrote:
>
>  > Let me know how this looks and if you want me to make any tweaks.
>
>           dec_both (&end, &bpos);
>           c = FETCH_BYTE (bpos);
>           if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
>
> Sorry but on that last line I have
>
>           if (!(c == ' ' || c == '\t'))
>
> or am I confused?

Not sure I follow, does the patch not apply?



Here is what I have after my patch for the handling of the TO == t:

      end = ZV;
      bpos = ZV_BYTE;
      while (bpos > BEGV_BYTE)
{
  dec_both (&end, &bpos);
  c = FETCH_BYTE (bpos);
  if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
            {
      inc_both (&end, &bpos);
      break;
            }
}
      while (bpos < ZV_BYTE)
{
  c = fetch_char_advance (&end, &bpos);
  if (!(c == ' ' || c == '\t'))
    break;
}

and before:

      end = ZV;
      bpos = ZV_BYTE;
      while (bpos > BEGV_BYTE)
{
  dec_both (&end, &bpos);
  c = FETCH_BYTE (bpos);
  if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
    break;
}
      while (bpos < ZV_BYTE)
{
  c = fetch_char_advance (&end, &bpos);
  if (!(c == ' ' || c == '\t'))
    break;
}

The difference is the inc_both before the break in the *first* loop,
not the second.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10 17:31                 ` Aaron Jensen
@ 2021-01-10 17:49                   ` martin rudalics
  2021-01-10 17:51                     ` Aaron Jensen
  0 siblings, 1 reply; 34+ messages in thread
From: martin rudalics @ 2021-01-10 17:49 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

 > Not sure I follow, does the patch not apply?

It didn't for some reason but applies now and seems to DTRT.  So I think
you should install it.

Thanks, martin





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10 17:49                   ` martin rudalics
@ 2021-01-10 17:51                     ` Aaron Jensen
  2021-01-10 17:57                       ` martin rudalics
  0 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-10 17:51 UTC (permalink / raw)
  To: martin rudalics; +Cc: 45748

On Sun, Jan 10, 2021 at 11:49 AM martin rudalics <rudalics@gmx.at> wrote:
>
>  > Not sure I follow, does the patch not apply?
>
> It didn't for some reason but applies now and seems to DTRT.  So I think
> you should install it.

Sorry, dtrt as in dtrt-mode? or something else? And by install do you
mean apply the patch (I'm not a committer). Sorry, just not up on al
the lingo :)

Thanks,

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10 17:51                     ` Aaron Jensen
@ 2021-01-10 17:57                       ` martin rudalics
  2021-01-10 17:58                         ` Aaron Jensen
  0 siblings, 1 reply; 34+ messages in thread
From: martin rudalics @ 2021-01-10 17:57 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

 >> It didn't for some reason but applies now and seems to DTRT.  So I think
 >> you should install it.
 >
 > Sorry, dtrt as in dtrt-mode?

DTRT as in "does the right thing".

 > or something else? And by install do you
 > mean apply the patch (I'm not a committer).

I meant to push it.  Eli, if you are OK with it, please push it.

 > Sorry, just not up on al
 > the lingo :)

martin, who didn't know that a dtrt-mode existed





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10 17:57                       ` martin rudalics
@ 2021-01-10 17:58                         ` Aaron Jensen
  0 siblings, 0 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-10 17:58 UTC (permalink / raw)
  To: martin rudalics; +Cc: 45748

On Sun, Jan 10, 2021 at 11:57 AM martin rudalics <rudalics@gmx.at> wrote:
>
> DTRT as in "does the right thing".

Ah, TIL (that's Today I Learned ;) )

> martin, who didn't know that a dtrt-mode existed

Hah

Best,

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10  2:56             ` Aaron Jensen
  2021-01-10 16:05               ` martin rudalics
@ 2021-01-13  4:34               ` Aaron Jensen
  2021-01-13 14:26                 ` Eli Zaretskii
  2021-01-15 12:11               ` Eli Zaretskii
  2 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-13  4:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 45748

Eli,

On Sat, Jan 9, 2021 at 8:56 PM Aaron Jensen <aaronjensen@gmail.com> wrote:
>
> On Sat, Jan 9, 2021 at 12:14 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > Yes, probably.
> >
> > But before we do any changes here, we need a test suite.  Would you
> > mind adding the necessary tests to test/src/xdisp-tests.el?
>
> Okay, I added a few basic tests for this case. I don't know if that's
> the best way to test it, but it's what I could figure out.
> ...

Does this one look good to you?

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-13  4:34               ` Aaron Jensen
@ 2021-01-13 14:26                 ` Eli Zaretskii
  0 siblings, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-13 14:26 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Tue, 12 Jan 2021 22:34:42 -0600
> Cc: martin rudalics <rudalics@gmx.at>, 45748@debbugs.gnu.org
> 
> > On Sat, Jan 9, 2021 at 12:14 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > > Yes, probably.
> > >
> > > But before we do any changes here, we need a test suite.  Would you
> > > mind adding the necessary tests to test/src/xdisp-tests.el?
> >
> > Okay, I added a few basic tests for this case. I don't know if that's
> > the best way to test it, but it's what I could figure out.
> > ...
> 
> Does this one look good to you?

Sorry, I didn't yet have time to take a good look at the changes.  I
will do that in a couple of days.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-10  2:56             ` Aaron Jensen
  2021-01-10 16:05               ` martin rudalics
  2021-01-13  4:34               ` Aaron Jensen
@ 2021-01-15 12:11               ` Eli Zaretskii
  2021-01-15 12:34                 ` Aaron Jensen
  2 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-15 12:11 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 9 Jan 2021 20:56:35 -0600
> Cc: martin rudalics <rudalics@gmx.at>, 45748@debbugs.gnu.org
> 
> Let me know how this looks and if you want me to make any tweaks.

Thanks, I installed this on the master branch.

However, the new tests fail for me in batch execution on MS-Windows
with this error:

  Test xdisp-tests--window-text-pixel-size condition:
      (error "Not using an ASCII terminal now; cannot make a new ASCII frame")

It works if I run the test interactively.

The backtrace is

  make-terminal-frame(((parent-frame . #<frame F1 062dca38>)))
  tty-create-frame-with-faces(((parent-frame . #<frame F1 062dca38>)))
  #f(compiled-function (params) #<bytecode 0x6bc24af6be4b5d2>)(((paren
  apply(#f(compiled-function (params) #<bytecode 0x6bc24af6be4b5d2>) (
  frame-creation-function(((parent-frame . #<frame F1 062dca38>)))
  make-frame(((parent-frame . #<frame F1 062dca38>)))
  display-buffer-in-child-frame(#<killed buffer> nil)
  display-buffer(#<killed buffer> (display-buffer-in-child-frame))
  (let* ((window (display-buffer (current-buffer) '(display-buffer-in-
  (progn (insert "xx ") (let* ((window (display-buffer (current-buffer
  (unwind-protect (progn (insert "xx ") (let* ((window (display-buffer
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn
  (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current
  (closure (t) nil (let ((temp-buffer (generate-new-buffer " *temp*" t
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name xdisp-tests--window-text-pixel-size-t
  ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
  ert-run-tests((not (tag :unstable)) #f(compiled-function (event-type
  ert-run-tests-batch((not (tag :unstable)))
  ert-run-tests-batch-and-exit((not (tag :unstable)))
  eval((ert-run-tests-batch-and-exit '(not (tag :unstable))) t)

I guess you are assuming some functionality that isn't supported on
all platforms?  Can you please rewrite the tests so that they work on
all platforms?

Thanks.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-15 12:11               ` Eli Zaretskii
@ 2021-01-15 12:34                 ` Aaron Jensen
  2021-01-15 13:15                   ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-15 12:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 45748

On Fri, Jan 15, 2021 at 6:11 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> However, the new tests fail for me in batch execution on MS-Windows
> with this error:
>
>   Test xdisp-tests--window-text-pixel-size condition:
>       (error "Not using an ASCII terminal now; cannot make a new ASCII frame")
>
> It works if I run the test interactively.

The tests do not work in batch mode. I don't know of a way to test
window-text-pixel-size in a terminal since it requires GUI.

> I guess you are assuming some functionality that isn't supported on
> all platforms?  Can you please rewrite the tests so that they work on
> all platforms?

I don't think it's a platform issue. Is there a standard for tests
that are GUI/interactive only? Perhaps you could wrap the tests
accordingly?

Thanks,

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-15 12:34                 ` Aaron Jensen
@ 2021-01-15 13:15                   ` Eli Zaretskii
  2021-01-15 14:04                     ` Aaron Jensen
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-15 13:15 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Fri, 15 Jan 2021 06:34:34 -0600
> Cc: martin rudalics <rudalics@gmx.at>, 45748@debbugs.gnu.org
> 
> >   Test xdisp-tests--window-text-pixel-size condition:
> >       (error "Not using an ASCII terminal now; cannot make a new ASCII frame")
> >
> > It works if I run the test interactively.
> 
> The tests do not work in batch mode. I don't know of a way to test
> window-text-pixel-size in a terminal since it requires GUI.

Why does it require GUI?

> I don't think it's a platform issue. Is there a standard for tests
> that are GUI/interactive only?

If we need to do this interactively, we could move the tests to
manual/redisplay-testsuite.el.  But I'd like first to try to make them
work in batch.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-15 13:15                   ` Eli Zaretskii
@ 2021-01-15 14:04                     ` Aaron Jensen
  2021-01-15 15:37                       ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-15 14:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 45748

On Fri, Jan 15, 2021 at 7:15 AM Eli Zaretskii <eliz@gnu.org> wrote:
> Why does it require GUI?

It may not, but I couldn't figure out how to control the window well
enough to predict its size, which is likely ignorance.
That's why I created a child frame so I knew that only what I wanted
was visible and I could predict its size.
I can try a few things later, though I'm open to any suggestions.

Thanks,

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-15 14:04                     ` Aaron Jensen
@ 2021-01-15 15:37                       ` Eli Zaretskii
  2021-01-15 17:03                         ` Aaron Jensen
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-15 15:37 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Fri, 15 Jan 2021 08:04:00 -0600
> Cc: martin rudalics <rudalics@gmx.at>, 45748@debbugs.gnu.org
> 
> On Fri, Jan 15, 2021 at 7:15 AM Eli Zaretskii <eliz@gnu.org> wrote:
> > Why does it require GUI?
> 
> It may not, but I couldn't figure out how to control the window well
> enough to predict its size, which is likely ignorance.
> That's why I created a child frame so I knew that only what I wanted
> was visible and I could predict its size.
> I can try a few things later, though I'm open to any suggestions.

We don't really need to resize a frame, we just need to call the
function and check its result, right?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces
  2021-01-15 15:37                       ` Eli Zaretskii
@ 2021-01-15 17:03                         ` Aaron Jensen
  0 siblings, 0 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-15 17:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 45748

On Fri, Jan 15, 2021 at 9:37 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> We don't really need to resize a frame, we just need to call the
> function and check its result, right?

I need to control the contents of a "visible" window and call the
function and check its result. When I attempted to do that, I wasn't
sure if I was getting the size of the test window or something else. I
didn't seem to be able to control it as I wanted to. See how the
current test works.

Aaron





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-09 15:43 bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces Aaron Jensen
  2021-01-09 15:57 ` Aaron Jensen
@ 2021-01-16 17:12 ` Aaron Jensen
  2021-01-16 17:57   ` Basil L. Contovounesios
  2021-01-16 18:24 ` Aaron Jensen
  2021-01-16 18:28 ` Aaron Jensen
  3 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-16 17:12 UTC (permalink / raw)
  To: 45748; +Cc: Aaron Jensen

(xdisp-tests--window-text-pixel-size)
(xdisp-tests--window-text-pixel-size-leading-space)
(xdisp-tests--window-text-pixel-size-trailing-space): Fix tests
---
 test/src/xdisp-tests.el | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el
index ec96d777ff..09c2fa83b3 100644
--- a/test/src/xdisp-tests.el
+++ b/test/src/xdisp-tests.el
@@ -73,33 +73,36 @@ xdisp-tests--minibuffer-scroll
     (should (equal (nth 1 posns) (nth 2 posns)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer-window "*test*" 'display-buffer-reuse-window nil
+    (erase-buffer)
     (insert "xxx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size (get-buffer-window) t t)))
+      (message "Size: %S" size)
+      (should (equal (/ (car size) char-width) 3)))))
+
+(ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748
+  (with-current-buffer (generate-new-buffer "*test*")
+    (insert "xxx")
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t)))
       (should (equal (/ (car size) char-width) 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-leading-space () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer (generate-new-buffer "*test*")
     (insert " xx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t)))
       (should (equal (/ (car size) char-width) 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-trailing-space () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer (generate-new-buffer "*test*")
     (insert "xx ")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t)))
       (should (equal (/ (car size) char-width) 3)))))
 
 ;;; xdisp-tests.el ends here
-- 
2.28.0






^ permalink raw reply related	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-16 17:12 ` bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode Aaron Jensen
@ 2021-01-16 17:57   ` Basil L. Contovounesios
  0 siblings, 0 replies; 34+ messages in thread
From: Basil L. Contovounesios @ 2021-01-16 17:57 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 45748

Aaron Jensen <aaronjensen@gmail.com> writes:

> diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el
> index ec96d777ff..09c2fa83b3 100644
> --- a/test/src/xdisp-tests.el
> +++ b/test/src/xdisp-tests.el
> @@ -73,33 +73,36 @@ xdisp-tests--minibuffer-scroll
>      (should (equal (nth 1 posns) (nth 2 posns)))))
>  
>  (ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748

FWIW, you can also include the bug number in the test's docstring, if
you prefer.

> -  (with-temp-buffer
> +  (with-current-buffer-window "*test*" 'display-buffer-reuse-window nil

Ideally the tests wouldn't leave this buffer lying around after they
have run; see (info "(ert) Tests and Their Environment").

Also, why does this test not use with-current-buffer like the other
ones?

> +    (erase-buffer)
>      (insert "xxx")
> -    (let* ((window
> -            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
> -          (char-width (frame-char-width))
> -          (size (window-text-pixel-size nil t t)))
> -      (delete-frame (window-frame window))
> +    (let* ((char-width (frame-char-width))

Nit: this and subsequent let* can also be let.

> +           (size (window-text-pixel-size (get-buffer-window) t t)))

Is get-buffer-window necessary?

> +      (message "Size: %S" size)

This debugging leftover should probably be removed.

> +      (should (equal (/ (car size) char-width) 3)))))

Thanks,

-- 
Basil





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-09 15:43 bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces Aaron Jensen
  2021-01-09 15:57 ` Aaron Jensen
  2021-01-16 17:12 ` bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode Aaron Jensen
@ 2021-01-16 18:24 ` Aaron Jensen
  2021-01-16 18:24   ` Aaron Jensen
  2021-01-16 18:28 ` Aaron Jensen
  3 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-16 18:24 UTC (permalink / raw)
  To: 45748; +Cc: contovob

Thanks Basil, updated.







^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-16 18:24 ` Aaron Jensen
@ 2021-01-16 18:24   ` Aaron Jensen
  0 siblings, 0 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-16 18:24 UTC (permalink / raw)
  To: 45748; +Cc: contovob, Aaron Jensen

(xdisp-tests--window-text-pixel-size)
(xdisp-tests--window-text-pixel-size-leading-space)
(xdisp-tests--window-text-pixel-size-trailing-space): Fix tests
---
 test/src/xdisp-tests.el | 42 ++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el
index ec96d777ff..637cc796a3 100644
--- a/test/src/xdisp-tests.el
+++ b/test/src/xdisp-tests.el
@@ -73,33 +73,33 @@ xdisp-tests--minibuffer-scroll
     (should (equal (nth 1 posns) (nth 2 posns)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer (generate-new-buffer "*test*")
     (insert "xxx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (kill-buffer)
+      (should (equal width-in-chars 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-leading-space () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer (generate-new-buffer "*test*")
     (insert " xx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (kill-buffer)
+      (should (equal width-in-chars 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-trailing-space () ;; bug#45748
-  (with-temp-buffer
+  (with-current-buffer (generate-new-buffer "*test*")
     (insert "xx ")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (kill-buffer)
+      (should (equal width-in-chars 3)))))
 
 ;;; xdisp-tests.el ends here
-- 
2.28.0






^ permalink raw reply related	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-09 15:43 bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces Aaron Jensen
                   ` (2 preceding siblings ...)
  2021-01-16 18:24 ` Aaron Jensen
@ 2021-01-16 18:28 ` Aaron Jensen
  2021-01-16 18:28   ` Aaron Jensen
  3 siblings, 1 reply; 34+ messages in thread
From: Aaron Jensen @ 2021-01-16 18:28 UTC (permalink / raw)
  To: 45748; +Cc: contovob

Updated again to use with-temp-buffer







^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-16 18:28 ` Aaron Jensen
@ 2021-01-16 18:28   ` Aaron Jensen
  2021-01-16 18:33     ` Eli Zaretskii
  2021-01-18 17:04     ` Eli Zaretskii
  0 siblings, 2 replies; 34+ messages in thread
From: Aaron Jensen @ 2021-01-16 18:28 UTC (permalink / raw)
  To: 45748; +Cc: contovob, Aaron Jensen

(xdisp-tests--window-text-pixel-size)
(xdisp-tests--window-text-pixel-size-leading-space)
(xdisp-tests--window-text-pixel-size-trailing-space): Fix tests
---
 test/src/xdisp-tests.el | 33 +++++++++++++++------------------
 1 file changed, 15 insertions(+), 18 deletions(-)

diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el
index ec96d777ff..4e7d2ad8ab 100644
--- a/test/src/xdisp-tests.el
+++ b/test/src/xdisp-tests.el
@@ -75,31 +75,28 @@ xdisp-tests--minibuffer-scroll
 (ert-deftest xdisp-tests--window-text-pixel-size () ;; bug#45748
   (with-temp-buffer
     (insert "xxx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (should (equal width-in-chars 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-leading-space () ;; bug#45748
   (with-temp-buffer
     (insert " xx")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (should (equal width-in-chars 3)))))
 
 (ert-deftest xdisp-tests--window-text-pixel-size-trailing-space () ;; bug#45748
   (with-temp-buffer
     (insert "xx ")
-    (let* ((window
-            (display-buffer (current-buffer) '(display-buffer-in-child-frame . nil)))
-          (char-width (frame-char-width))
-          (size (window-text-pixel-size nil t t)))
-      (delete-frame (window-frame window))
-      (should (equal (/ (car size) char-width) 3)))))
+    (switch-to-buffer (current-buffer))
+    (let* ((char-width (frame-char-width))
+           (size (window-text-pixel-size nil t t))
+           (width-in-chars (/ (car size) char-width)))
+      (should (equal width-in-chars 3)))))
 
 ;;; xdisp-tests.el ends here
-- 
2.28.0






^ permalink raw reply related	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-16 18:28   ` Aaron Jensen
@ 2021-01-16 18:33     ` Eli Zaretskii
  2021-01-18 17:04     ` Eli Zaretskii
  1 sibling, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-16 18:33 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: contovob, 45748

> From: Aaron Jensen <aaronjensen@gmail.com>
> Cc: eliz@gnu.org,
> 	contovob@tcd.ie,
> 	Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 16 Jan 2021 12:28:46 -0600
> 
> (xdisp-tests--window-text-pixel-size)
> (xdisp-tests--window-text-pixel-size-leading-space)
> (xdisp-tests--window-text-pixel-size-trailing-space): Fix tests

Thanks, please install this.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode
  2021-01-16 18:28   ` Aaron Jensen
  2021-01-16 18:33     ` Eli Zaretskii
@ 2021-01-18 17:04     ` Eli Zaretskii
  1 sibling, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2021-01-18 17:04 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: contovob, 45748-done

> From: Aaron Jensen <aaronjensen@gmail.com>
> Date: Sat, 16 Jan 2021 12:28:46 -0600
> Cc: contovob@tcd.ie, eliz@gnu.org, Aaron Jensen <aaronjensen@gmail.com>
> 
> (xdisp-tests--window-text-pixel-size)
> (xdisp-tests--window-text-pixel-size-leading-space)
> (xdisp-tests--window-text-pixel-size-trailing-space): Fix tests

Thanks, installed, and closing the bug.





^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2021-01-18 17:04 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-09 15:43 bug#45748: 28.0.50; fit-frame-to-buffer ignores leading spaces Aaron Jensen
2021-01-09 15:57 ` Aaron Jensen
2021-01-09 16:27   ` Aaron Jensen
2021-01-09 17:07     ` martin rudalics
2021-01-09 17:44       ` Aaron Jensen
2021-01-09 17:55         ` Aaron Jensen
2021-01-09 18:14           ` Eli Zaretskii
2021-01-10  2:56             ` Aaron Jensen
2021-01-10 16:05               ` martin rudalics
2021-01-10 17:31                 ` Aaron Jensen
2021-01-10 17:49                   ` martin rudalics
2021-01-10 17:51                     ` Aaron Jensen
2021-01-10 17:57                       ` martin rudalics
2021-01-10 17:58                         ` Aaron Jensen
2021-01-13  4:34               ` Aaron Jensen
2021-01-13 14:26                 ` Eli Zaretskii
2021-01-15 12:11               ` Eli Zaretskii
2021-01-15 12:34                 ` Aaron Jensen
2021-01-15 13:15                   ` Eli Zaretskii
2021-01-15 14:04                     ` Aaron Jensen
2021-01-15 15:37                       ` Eli Zaretskii
2021-01-15 17:03                         ` Aaron Jensen
2021-01-09 18:03         ` Eli Zaretskii
2021-01-09 17:44     ` Eli Zaretskii
2021-01-09 17:49       ` Aaron Jensen
2021-01-09 17:07   ` martin rudalics
2021-01-16 17:12 ` bug#45748: [PATCH] * test/src/xdisp-tests.el Fix tests to work in batch mode Aaron Jensen
2021-01-16 17:57   ` Basil L. Contovounesios
2021-01-16 18:24 ` Aaron Jensen
2021-01-16 18:24   ` Aaron Jensen
2021-01-16 18:28 ` Aaron Jensen
2021-01-16 18:28   ` Aaron Jensen
2021-01-16 18:33     ` Eli Zaretskii
2021-01-18 17:04     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).