emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] scratch/line-numbers a9be5a7: Fix relative-number display


From: Eli Zaretskii
Subject: [Emacs-diffs] scratch/line-numbers a9be5a7: Fix relative-number display with non-nil display-line-number-width
Date: Fri, 30 Jun 2017 15:49:54 -0400 (EDT)

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

    Fix relative-number display with non-nil display-line-number-width
    
    * src/xdisp.c (maybe_produce_line_number): Don't treat a zero
    value of display-line-number-width as acceptable.
    Handle the case of 'relative' with display-line-number-width
    non-nil and smaller than the absolute line number requires.
    Reported by Alex <address@hidden>.
---
 src/xdisp.c | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index bcd7d33..aeccac2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20867,26 +20867,23 @@ maybe_produce_line_number (struct it *it)
     {
       if (NATNUMP (Vdisplay_line_number_width))
        it->lnum_width = XFASTINT (Vdisplay_line_number_width);
+
+      /* Max line number to be displayed cannot be more than the one
+        corresponding to the last row of the desired matrix.  */
+      ptrdiff_t max_lnum;
+
+      if (NILP (Vdisplay_line_numbers_current_absolute)
+         && (EQ (Vdisplay_line_numbers, Qrelative)
+             || EQ (Vdisplay_line_numbers, Qvisual)))
+       /* We subtract one more because the current line is always
+          zero in this mode.  */
+       max_lnum = it->w->desired_matrix->nrows - 2;
+      else if (EQ (Vdisplay_line_numbers, Qvisual))
+       max_lnum = it->pt_lnum + it->w->desired_matrix->nrows - 1;
       else
-       {
-         /* Max line number to be displayed cannot be more than
-            the one corresponding to the last row of the desired
-            matrix.  */
-         ptrdiff_t max_lnum;
-
-         if (NILP (Vdisplay_line_numbers_current_absolute)
-             && (EQ (Vdisplay_line_numbers, Qrelative)
-                 || EQ (Vdisplay_line_numbers, Qvisual)))
-           /* We subtract one more because the current line is always
-              zero in this mode.  */
-           max_lnum = it->w->desired_matrix->nrows - 2;
-         else if (EQ (Vdisplay_line_numbers, Qvisual))
-           max_lnum = it->pt_lnum + it->w->desired_matrix->nrows - 1;
-         else
-           max_lnum = this_line + it->w->desired_matrix->nrows - 1 - it->vpos;
-         max_lnum = max (1, max_lnum);
-         it->lnum_width = log10 (max_lnum) + 1;
-       }
+       max_lnum = this_line + it->w->desired_matrix->nrows - 1 - it->vpos;
+      max_lnum = max (1, max_lnum);
+      it->lnum_width = max (it->lnum_width, log10 (max_lnum) + 1);
       eassert (it->lnum_width > 0);
     }
   if (EQ (Vdisplay_line_numbers, Qrelative))



reply via email to

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