]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problems with line-number updates in Follow mode
authorEli Zaretskii <eliz@gnu.org>
Sat, 24 Jun 2017 09:37:30 +0000 (12:37 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 24 Jun 2017 09:37:30 +0000 (12:37 +0300)
* src/xdisp.c (redisplay_window): If forced window-start requires
to move a window's point, and the window is under relative
line-number display, force another round of redisplay to update
the relative line numbers.  This fixes follow-mode "redisplay" of
its window group.

* lisp/frame.el: Add display-line-numbers to the list of variables
that should trigger redisplay of the current buffer.

lisp/frame.el
src/xdisp.c

index b7a551692812dc6626521ab2635715f50955f401..8f51afa2a9a2d08d4e18cb857fe20884f5e45252 100644 (file)
@@ -2434,6 +2434,7 @@ See also `toggle-frame-maximized'."
         line-prefix
         wrap-prefix
         truncate-lines
+        display-line-numbers
         bidi-paragraph-direction
         bidi-display-reordering))
 
index 39176e0e675e720802d0d04ed25d6324c2327f99..9b5762550d76571b3c43175653e2339b9cb405b9 100644 (file)
@@ -16800,10 +16800,14 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
          XBUFFER (w->contents)->text->redisplay = false;
          safe__call1 (true, Vpre_redisplay_function, Fcons (window, Qnil));
 
-         if (w->redisplay || XBUFFER (w->contents)->text->redisplay)
-           {
-             /* pre-redisplay-function made changes (e.g. move the region)
-                that require another round of redisplay.  */
+         if (w->redisplay || XBUFFER (w->contents)->text->redisplay
+             || (EQ (Vdisplay_line_numbers, Qrelative)
+                 && row != MATRIX_FIRST_TEXT_ROW (w->desired_matrix)))
+           {
+             /* Either pre-redisplay-function made changes (e.g. move
+                the region), or we moved point in a window that is
+                under display-line-numbers = relative mode.  We need
+                another round of redisplay.  */
              clear_glyph_matrix (w->desired_matrix);
              if (!try_window (window, startp, 0))
                goto need_larger_matrices;