emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] scratch/line-numbers 5b9b494 4/9: Minor fixes


From: Eli Zaretskii
Subject: [Emacs-diffs] scratch/line-numbers 5b9b494 4/9: Minor fixes
Date: Fri, 30 Jun 2017 10:41:20 -0400 (EDT)

branch: scratch/line-numbers
commit 5b9b49492b9c024bd07b83ef6e5d095af6b8fdd0
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Minor fixes
    
    * src/xdisp.c (maybe_produce_line_number): Fix bug that caused
    line numbers to be displayed in empty lines beyond ZV.
    (x_produce_glyphs): Start fixing TAB display in truncated lines.
---
 src/xdisp.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index ef2e264..bbf3050 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20916,7 +20916,7 @@ maybe_produce_line_number (struct it *it)
        tem_it.face_id = lnum_face_id;
       if (beyond_zv
          /* Don't display the same line number more than once.  */
-         && (!EQ (Vdisplay_line_numbers, Qvisual)
+         || (!EQ (Vdisplay_line_numbers, Qvisual)
              && (it->continuation_lines_width > 0
                  || (this_line == last_line && !first_time))))
        tem_it.c = tem_it.char_to_display = ' ';
@@ -27996,19 +27996,22 @@ x_produce_glyphs (struct it *it)
            {
              int tab_width = it->tab_width * font->space_width;
              int x = it->current_x + it->continuation_lines_width;
+             int x0 = x;
              /* Adjust for line numbers.  Kludge alert: the "2" below
                 is because we add 2 blanks to the actual line number.  */
              if (!NILP (Vdisplay_line_numbers))
-               x -= (it->lnum_width + 2 - it->w->hscroll) * font->space_width;
+               x -= (it->lnum_width + 2) * font->space_width;
              int next_tab_x = ((1 + x + tab_width - 1) / tab_width) * 
tab_width;
+             if (!NILP (Vdisplay_line_numbers))
+               next_tab_x += (it->lnum_width + 2) * font->space_width;
 
              /* If the distance from the current position to the next tab
                 stop is less than a space character width, use the
                 tab stop after that.  */
-             if (next_tab_x - x < font->space_width)
+             if (next_tab_x - x0 < font->space_width)
                next_tab_x += tab_width;
 
-             it->pixel_width = next_tab_x - x;
+             it->pixel_width = next_tab_x - x0;
              it->nglyphs = 1;
              if (FONT_TOO_HIGH (font))
                {



reply via email to

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