GNU bug report logs - #64395
[PATCH] * src/xdisp.c (display_string): Don't truncate mode line in terminal

Previous Next

Package: emacs;

Reported by: Gong Qijian <gongqijian <at> gmail.com>

Date: Sat, 1 Jul 2023 06:31:01 UTC

Severity: normal

Tags: patch

Merged with 64396

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 64395 in the body.
You can then email your comments to 64395 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 06:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Gong Qijian <gongqijian <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 01 Jul 2023 06:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Gong Qijian <gongqijian <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Cc: Gong Qijian <gongqijian <at> gmail.com>
Subject: [PATCH] * src/xdisp.c (display_string): Don't truncate mode line in
 terminal
Date: Sat,  1 Jul 2023 14:27:56 +0800
The truncate happens when the mode line is of lenght
`(1+ (window-width))' and ends with CJK characters.

Reproduce:

$ emacs -nw -Q --eval "\
  (progn
    ;; Set modeline
    (setq mode-line-format
          '((:eval
             (truncate-string-to-width
              (concat (format-mode-line \"- Ln %l, Col %c \")
                      (apply #'concat (make-list (window-width) \"-\")))
              (1+ (window-width)) nil nil \"中文\"))))
    ;; Steps to reproduce
    (with-current-buffer \"*scratch*\"
      (erase-buffer)
      (insert \";; 1. You Can't move the cursor here, this is where the menu should be\n\"
              \";; 2. Press `C-x o' to switch to the other window\n\"
              \";; 3. Repeat step 2 several times\n\"
              \";; 4. You will see nothing in the buffer except multiple lines of modeline\n\")
      (goto-char (point-min))
      (split-window-right)))"
---
 src/xdisp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index 4841a0af..00d2dea0 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -27360,7 +27360,7 @@ display_string (const char *string, Lisp_Object lisp_string, Lisp_Object face_st
 	{
 	  /* Add truncation mark, but don't do it if the line is
 	     truncated at a padding space.  */
-	  if (it_charpos < it->string_nchars)
+	  if (it_charpos <= it->string_nchars)
 	    {
 	      if (!FRAME_WINDOW_P (it->f))
 		{
-- 
2.25.0





Merged 64395 64396. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 01 Jul 2023 07:49:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 07:50:02 GMT) Full text and rfc822 format available.

Message #10 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Gong Qijian <gongqijian <at> gmail.com>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 10:50:00 +0300
> Cc: Gong Qijian <gongqijian <at> gmail.com>
> From: Gong Qijian <gongqijian <at> gmail.com>
> Date: Sat,  1 Jul 2023 14:27:56 +0800
> 
> The truncate happens when the mode line is of lenght
> `(1+ (window-width))' and ends with CJK characters.
> 
> Reproduce:

Thanks, but please show the screenshots of the effect of the bug.  I
don't have access to terminals that can display CJK characters on the
mode line, so full reproduction of the issue is impossible for me.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 10:42:02 GMT) Full text and rfc822 format available.

Message #13 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: qijian gong <gongqijian <at> gmail.com>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 13:42:12 +0300
[Pleased use Reply All to reply, so that the bug tracker is CC'ed.]

> From: qijian gong <gongqijian <at> gmail.com>
> Date: Sat, 1 Jul 2023 18:23:21 +0800
> 
> [image: emacs-modeline-bug64395.gif]
> 
> Eli Zaretskii <eliz <at> gnu.org> 于2023年7月1日周六 15:49写道:
> 
> > > Cc: Gong Qijian <gongqijian <at> gmail.com>
> > > From: Gong Qijian <gongqijian <at> gmail.com>
> > > Date: Sat,  1 Jul 2023 14:27:56 +0800
> > >
> > > The truncate happens when the mode line is of lenght
> > > `(1+ (window-width))' and ends with CJK characters.
> > >
> > > Reproduce:
> >
> > Thanks, but please show the screenshots of the effect of the bug.  I
> > don't have access to terminals that can display CJK characters on the
> > mode line, so full reproduction of the issue is impossible for me.
> >

Thanks, but I see no mode-line image on that screen shot.  I only see
the source of your reproduction recipe.  I asked to see the effect of
running the recipe.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 10:47:02 GMT) Full text and rfc822 format available.

Message #16 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: qijian gong <gongqijian <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 1 Jul 2023 18:45:55 +0800
[Message part 1 (text/plain, inline)]
[image: emacs-modeline-bug64395.gif]

Eli Zaretskii <eliz <at> gnu.org> 于2023年7月1日周六 18:41写道:

> [Pleased use Reply All to reply, so that the bug tracker is CC'ed.]
>
> > From: qijian gong <gongqijian <at> gmail.com>
> > Date: Sat, 1 Jul 2023 18:23:21 +0800
> >
> > [image: emacs-modeline-bug64395.gif]
> >
> > Eli Zaretskii <eliz <at> gnu.org> 于2023年7月1日周六 15:49写道:
> >
> > > > Cc: Gong Qijian <gongqijian <at> gmail.com>
> > > > From: Gong Qijian <gongqijian <at> gmail.com>
> > > > Date: Sat,  1 Jul 2023 14:27:56 +0800
> > > >
> > > > The truncate happens when the mode line is of lenght
> > > > `(1+ (window-width))' and ends with CJK characters.
> > > >
> > > > Reproduce:
> > >
> > > Thanks, but please show the screenshots of the effect of the bug.  I
> > > don't have access to terminals that can display CJK characters on the
> > > mode line, so full reproduction of the issue is impossible for me.
> > >
>
> Thanks, but I see no mode-line image on that screen shot.  I only see
> the source of your reproduction recipe.  I asked to see the effect of
> running the recipe.
>
>
[Message part 2 (text/html, inline)]
[emacs-modeline-bug64395.gif (image/gif, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 10:51:01 GMT) Full text and rfc822 format available.

Message #19 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: qijian gong <gongqijian <at> gmail.com>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 13:50:56 +0300
> From: qijian gong <gongqijian <at> gmail.com>
> Date: Sat, 1 Jul 2023 18:45:55 +0800
> Cc: 64395 <at> debbugs.gnu.org
> 
> emacs-modeline-bug64395.gif

Thanks, but I still don't see the mode-line display that is produced
by your recipe.  I only see the recipe itself.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 11:01:02 GMT) Full text and rfc822 format available.

Message #22 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: qijian gong <gongqijian <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 1 Jul 2023 19:00:17 +0800
[Message part 1 (text/plain, inline)]
Do you mean the keystroke logs?

Eli Zaretskii <eliz <at> gnu.org> 于2023年7月1日周六 18:50写道:

> > From: qijian gong <gongqijian <at> gmail.com>
> > Date: Sat, 1 Jul 2023 18:45:55 +0800
> > Cc: 64395 <at> debbugs.gnu.org
> >
> > emacs-modeline-bug64395.gif
>
> Thanks, but I still don't see the mode-line display that is produced
> by your recipe.  I only see the recipe itself.
>
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 11:08:02 GMT) Full text and rfc822 format available.

Message #25 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: qijian gong <gongqijian <at> gmail.com>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 14:07:48 +0300
> From: qijian gong <gongqijian <at> gmail.com>
> Date: Sat, 1 Jul 2023 19:00:17 +0800
> Cc: 64395 <at> debbugs.gnu.org
> 
> Do you mean the keystroke logs?

No, I mean the picture of the mode-line with truncation that is
produced by running your reproduction recipe.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 11:26:01 GMT) Full text and rfc822 format available.

Message #28 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: qijian gong <gongqijian <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 1 Jul 2023 19:25:26 +0800
[Message part 1 (text/plain, inline)]
Sorry, I don't quite understand what you mean.

The picture I sent earlier is an animation. It shows the entire
reproduction process and the result.



Eli Zaretskii <eliz <at> gnu.org> 于2023年7月1日周六 19:07写道:

> > From: qijian gong <gongqijian <at> gmail.com>
> > Date: Sat, 1 Jul 2023 19:00:17 +0800
> > Cc: 64395 <at> debbugs.gnu.org
> >
> > Do you mean the keystroke logs?
>
> No, I mean the picture of the mode-line with truncation that is
> produced by running your reproduction recipe.
>
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 12:01:02 GMT) Full text and rfc822 format available.

Message #31 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: qijian gong <gongqijian <at> gmail.com>
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 15:00:48 +0300
> From: qijian gong <gongqijian <at> gmail.com>
> Date: Sat, 1 Jul 2023 19:25:26 +0800
> Cc: 64395 <at> debbugs.gnu.org
> 
> The picture I sent earlier is an animation. It shows the entire reproduction process and the result.

Sorry, I didn't realize that it included animation.

I think I see the issue now.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sat, 01 Jul 2023 12:48:01 GMT) Full text and rfc822 format available.

Message #34 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: gongqijian <at> gmail.com
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 01 Jul 2023 15:47:39 +0300
> Cc: 64395 <at> debbugs.gnu.org
> Date: Sat, 01 Jul 2023 15:00:48 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > From: qijian gong <gongqijian <at> gmail.com>
> > Date: Sat, 1 Jul 2023 19:25:26 +0800
> > Cc: 64395 <at> debbugs.gnu.org
> > 
> > The picture I sent earlier is an animation. It shows the entire reproduction process and the result.
> 
> Sorry, I didn't realize that it included animation.
> 
> I think I see the issue now.

OK, I've now found a way of reproducing the problem on a system to
which I have access.

Your proposed change fixes the problem, but it fixes it incorrectly:
after applying the patch, I see a truncation glyph "$" at the end of
the mode line.  This should never happen on the mode line: we don't
show truncation glyphs there.  Compare the display after applying your
patch with the mode-line displayed after evaluating the below:

 (setq mode-line-format
       (concat (format-mode-line
                "- Ln %l, Col %c ")
               (make-string 100 ?-)))

As you see, the expected display of the mode line that is truncated is
simply not to see the truncated part, without any "$" truncation
glyph at the end of the mode line.

So a slightly different change is needed to properly fix this case.
I'm working on such a proper fix.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64395; Package emacs. (Sun, 02 Jul 2023 08:15:02 GMT) Full text and rfc822 format available.

Message #37 received at 64395 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: gongqijian <at> gmail.com
Cc: 64395 <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sun, 02 Jul 2023 11:15:20 +0300
> Cc: 64395 <at> debbugs.gnu.org
> Date: Sat, 01 Jul 2023 15:47:39 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> Your proposed change fixes the problem, but it fixes it incorrectly:
> after applying the patch, I see a truncation glyph "$" at the end of
> the mode line.  This should never happen on the mode line: we don't
> show truncation glyphs there.  Compare the display after applying your
> patch with the mode-line displayed after evaluating the below:
> 
>  (setq mode-line-format
>        (concat (format-mode-line
>                 "- Ln %l, Col %c ")
>                (make-string 100 ?-)))
> 
> As you see, the expected display of the mode line that is truncated is
> simply not to see the truncated part, without any "$" truncation
> glyph at the end of the mode line.
> 
> So a slightly different change is needed to properly fix this case.
> I'm working on such a proper fix.

Should be fixed now on the master branch, please test.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Sat, 15 Jul 2023 07:48:02 GMT) Full text and rfc822 format available.

Notification sent to Gong Qijian <gongqijian <at> gmail.com>:
bug acknowledged by developer. (Sat, 15 Jul 2023 07:48:02 GMT) Full text and rfc822 format available.

Message #42 received at 64395-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: gongqijian <at> gmail.com
Cc: 64395-done <at> debbugs.gnu.org
Subject: Re: bug#64395: [PATCH] * src/xdisp.c (display_string): Don't truncate
 mode line in terminal
Date: Sat, 15 Jul 2023 10:47:58 +0300
> Cc: 64395 <at> debbugs.gnu.org
> Date: Sun, 02 Jul 2023 11:15:20 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > Cc: 64395 <at> debbugs.gnu.org
> > Date: Sat, 01 Jul 2023 15:47:39 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> > 
> > Your proposed change fixes the problem, but it fixes it incorrectly:
> > after applying the patch, I see a truncation glyph "$" at the end of
> > the mode line.  This should never happen on the mode line: we don't
> > show truncation glyphs there.  Compare the display after applying your
> > patch with the mode-line displayed after evaluating the below:
> > 
> >  (setq mode-line-format
> >        (concat (format-mode-line
> >                 "- Ln %l, Col %c ")
> >                (make-string 100 ?-)))
> > 
> > As you see, the expected display of the mode line that is truncated is
> > simply not to see the truncated part, without any "$" truncation
> > glyph at the end of the mode line.
> > 
> > So a slightly different change is needed to properly fix this case.
> > I'm working on such a proper fix.
> 
> Should be fixed now on the master branch, please test.

No further comments within 2 weeks, so I presume the bug has indeed
been solved, and I'm therefore closing it.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Sat, 15 Jul 2023 07:48:02 GMT) Full text and rfc822 format available.

Notification sent to Gong Qijian <gongqijian <at> gmail.com>:
bug acknowledged by developer. (Sat, 15 Jul 2023 07:48:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 12 Aug 2023 11:24:14 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 25 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.