aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/treesit.c10
-rw-r--r--src/window.c33
-rw-r--r--src/xdisp.c4
3 files changed, 31 insertions, 16 deletions
diff --git a/src/treesit.c b/src/treesit.c
index e1d6f1ef79f..ef0f2407840 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -797,12 +797,10 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t old_end_byte,
797 max (visible_beg, old_end_byte)) 797 max (visible_beg, old_end_byte))
798 - visible_beg); 798 - visible_beg);
799 /* We don't clip new_end_offset under visible_end, because 799 /* We don't clip new_end_offset under visible_end, because
800 inserting in narrowed region always extends the visible 800 otherwise we would miss updating the clipped part. Plus,
801 region. If we clip new_end_offset here, and re-add the 801 when inserting in narrowed region, the narrowed region
802 clipped "tail" in treesit_sync_visible_region later, 802 will grow to accommodate the new text, so this is the
803 while it is technically equivalent, tree-sitter's 803 correct behavior. (Bug#61369). */
804 incremental parsing algorithm doesn't seem to like it
805 (bug#61369). */
806 ptrdiff_t new_end_offset = (max (visible_beg, new_end_byte) 804 ptrdiff_t new_end_offset = (max (visible_beg, new_end_byte)
807 - visible_beg); 805 - visible_beg);
808 eassert (start_offset <= old_end_offset); 806 eassert (start_offset <= old_end_offset);
diff --git a/src/window.c b/src/window.c
index 9334f922f89..bf89261e79c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -762,10 +762,15 @@ future use. */)
762 762
763DEFUN ("window-use-time", Fwindow_use_time, Swindow_use_time, 0, 1, 0, 763DEFUN ("window-use-time", Fwindow_use_time, Swindow_use_time, 0, 1, 0,
764 doc: /* Return the use time of window WINDOW. 764 doc: /* Return the use time of window WINDOW.
765WINDOW must be a live window and defaults to the selected one. 765WINDOW must specify a live window and defaults to the selected one.
766The window with the highest use time is the most recently selected 766
767one. The window with the lowest use time is the least recently 767The window with the highest use time is usually the one most recently
768selected one. */) 768selected by calling `select-window' with NORECORD nil. The window with
769the lowest use time is usually the least recently selected one chosen in
770such a way.
771
772Note that the use time of a window can be also changed by calling
773`window-bump-use-time' for that window. */)
769 (Lisp_Object window) 774 (Lisp_Object window)
770{ 775{
771 return make_fixnum (decode_live_window (window)->use_time); 776 return make_fixnum (decode_live_window (window)->use_time);
@@ -773,15 +778,27 @@ selected one. */)
773 778
774DEFUN ("window-bump-use-time", Fwindow_bump_use_time, 779DEFUN ("window-bump-use-time", Fwindow_bump_use_time,
775 Swindow_bump_use_time, 0, 1, 0, 780 Swindow_bump_use_time, 0, 1, 0,
776 doc: /* Mark WINDOW as having been most recently used. 781 doc: /* Mark WINDOW as second most recently used.
777WINDOW must be a live window and defaults to the selected one. */) 782WINDOW must specify a live window.
783
784If WINDOW is not selected and the selected window has the highest use
785time of all windows, set the use time of WINDOW to that of the selected
786window, increase the use time of the selected window by one and return
787the new use time of WINDOW. Otherwise, do nothing and return nil. */)
778 (Lisp_Object window) 788 (Lisp_Object window)
779{ 789{
780 struct window *w = decode_live_window (window); 790 struct window *w = decode_live_window (window);
791 struct window *sw = XWINDOW (selected_window);
781 792
782 w->use_time = ++window_select_count; 793 if (w != sw && sw->use_time == window_select_count)
794 {
795 w->use_time = window_select_count;
796 sw->use_time = ++window_select_count;
783 797
784 return Qnil; 798 return make_fixnum (w->use_time);
799 }
800 else
801 return Qnil;
785} 802}
786 803
787DEFUN ("window-pixel-width", Fwindow_pixel_width, Swindow_pixel_width, 0, 1, 0, 804DEFUN ("window-pixel-width", Fwindow_pixel_width, Swindow_pixel_width, 0, 1, 0,
diff --git a/src/xdisp.c b/src/xdisp.c
index 21362d0b9d8..879ce4ca8b2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9609,8 +9609,8 @@ move_it_in_display_line_to (struct it *it,
9609 else 9609 else
9610 line_number_pending = true; 9610 line_number_pending = true;
9611 } 9611 }
9612 /* If there's a line-/wrap-prefix, handle it. */ 9612 /* If there's a line-/wrap-prefix, handle it, if we didn't already. */
9613 if (it->method == GET_FROM_BUFFER) 9613 if (it->area == TEXT_AREA && !it->string_from_prefix_prop_p)
9614 handle_line_prefix (it); 9614 handle_line_prefix (it);
9615 } 9615 }
9616 9616