]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix recent change in window.c
authorEli Zaretskii <eliz@gnu.org>
Sat, 7 Jul 2018 07:45:45 +0000 (10:45 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 7 Jul 2018 07:45:45 +0000 (10:45 +0300)
* src/window.c (scroll_command): Fix minor inefficiency in
last change: don't call Fset_buffer if the buffer is already set to be
what we want.  (Bug#31988)

src/window.c

index 8d1aed46dff6764a30e8436c324558847127c188..d3c72570dd1fd4a0d2adc97f216fe71e179bf4f3 100644 (file)
@@ -5652,12 +5652,17 @@ scroll_command (Lisp_Object window, Lisp_Object n, int direction)
   w = XWINDOW (window);
   other_window = ! EQ (window, selected_window);
 
-  /* If given window's buffer isn't current, make it current for
-     the moment.  But don't screw up if window_scroll gets an error.  */
+  /* If given window's buffer isn't current, make it current for the
+     moment.  If the window's buffer is the same, but it is not the
+     selected window, we need to save-excursion to avoid affecting
+     point in the selected window (which would cause the selected
+     window to scroll).  Don't screw up if window_scroll gets an
+     error.  */
   if (other_window || XBUFFER (w->contents) != current_buffer)
     {
       record_unwind_protect_excursion ();
-      Fset_buffer (w->contents);
+      if (XBUFFER (w->contents) != current_buffer)
+       Fset_buffer (w->contents);
     }
 
   if (other_window)