bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs 21.1 display bug


From: Gerd Moellmann
Subject: Re: Emacs 21.1 display bug
Date: 22 Oct 2001 16:55:45 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1.50

Gustav HÃ¥llberg <gustav@virtutech.se> writes:

> To repeat, start emacs 21.1 (with -q), and type (replace "100" with
> something that's actually larger than your frame width, ^Q == C-q etc.):

Can you please try this:

*** xdisp.c     2001/10/22 14:26:02     1.686
--- xdisp.c     2001/10/22 14:51:13
***************
*** 12935,12952 ****
                    {
                      /* Display element draws past the right edge of
                         the window.  Restore positions to values
!                        before the element.  The next line starts
!                        with current_x before the glyph that could
!                        not be displayed, so that TAB works right.  */
                      row->used[TEXT_AREA] = n_glyphs_before + i;
                  
                      /* Display continuation glyphs.  */
                      if (!FRAME_WINDOW_P (it->f))
                        produce_special_glyphs (it, IT_CONTINUATION);
                      row->continued_p = 1;
                      
-                     it->current_x = x;
-                     it->continuation_lines_width += x;
                      if (nglyphs > 1 && i > 0)
                        {
                          row->ends_in_middle_of_char_p = 1;
--- 12935,12954 ----
                    {
                      /* Display element draws past the right edge of
                         the window.  Restore positions to values
!                        before the element.  */
                      row->used[TEXT_AREA] = n_glyphs_before + i;
                  
                      /* Display continuation glyphs.  */
                      if (!FRAME_WINDOW_P (it->f))
                        produce_special_glyphs (it, IT_CONTINUATION);
                      row->continued_p = 1;
+ 
+                     /* A TAB takes us to the right edge of the window.  */
+                     if (it->c == '\t')
+                       it->continuation_lines_width += it->last_visible_x;
+                     else
+                       it->continuation_lines_width += x;
                      
                      if (nglyphs > 1 && i > 0)
                        {
                          row->ends_in_middle_of_char_p = 1;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]