[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master dee8674: Minor redisplay optimisations
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master dee8674: Minor redisplay optimisations |
Date: |
Thu, 23 Feb 2017 21:17:10 -0500 (EST) |
branch: master
commit dee8674414fae2323fd9cbf05aa762e72fa575e5
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
Minor redisplay optimisations
* src/frame.c (Ficonify_frame): No need to redisplay everything.
* src/xdisp.c (overlay_arrows_changed_p): Add `set_redisplay' argument.
(redisplay_internal): Use it to avoid redisplaying everything.
(try_window_id): Use it keep the same behavior as before.
---
src/frame.c | 3 ---
src/xdisp.c | 18 +++++++++++-------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/frame.c b/src/frame.c
index d0f653f..5e1e2f1 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2156,9 +2156,6 @@ If omitted, FRAME defaults to the currently selected
frame. */)
#endif
}
- /* Make menu bar update for the Buffers and Frames menus. */
- windows_or_buffers_changed = 17;
-
return Qnil;
}
diff --git a/src/xdisp.c b/src/xdisp.c
index e59934d..b0ff627 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13336,7 +13336,7 @@ overlay_arrow_in_current_buffer_p (void)
has changed. */
static bool
-overlay_arrows_changed_p (void)
+overlay_arrows_changed_p (bool set_redisplay)
{
Lisp_Object vlist;
@@ -13356,7 +13356,12 @@ overlay_arrows_changed_p (void)
Fget (var, Qlast_arrow_position))
|| ! (pstr = overlay_arrow_string_or_property (var),
EQ (pstr, Fget (var, Qlast_arrow_string))))
- return true;
+ {
+ if (set_redisplay)
+ bset_redisplay (XMARKER (val)->buffer);
+ else
+ return true;
+ }
}
return false;
}
@@ -13781,10 +13786,9 @@ redisplay_internal (void)
/* If specs for an arrow have changed, do thorough redisplay
to ensure we remove any arrow that should no longer exist. */
- if (overlay_arrows_changed_p ())
- /* Apparently, this is the only case where we update other windows,
- without updating other mode-lines. */
- windows_or_buffers_changed = 49;
+ /* Apparently, this is the only case where we update other windows,
+ without updating other mode-lines. */
+ overlay_arrows_changed_p (true);
consider_all_windows_p = (update_mode_lines
|| windows_or_buffers_changed);
@@ -18282,7 +18286,7 @@ try_window_id (struct window *w)
/* Can't use this if overlay arrow position and/or string have
changed. */
- if (overlay_arrows_changed_p ())
+ if (overlay_arrows_changed_p (false))
GIVE_UP (12);
/* When word-wrap is on, adding a space to the first word of a
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master dee8674: Minor redisplay optimisations,
Stefan Monnier <=