diff options
author | Stefan Monnier <[email protected]> | 2013-11-28 17:43:09 -0500 |
---|---|---|
committer | Stefan Monnier <[email protected]> | 2013-11-28 17:43:09 -0500 |
commit | 655ab9a380068143cfb9a31d01488e83676d81c1 (patch) | |
tree | c703f4b96ca26edb6200cd08d6415fb6ece04560 /src/minibuf.c | |
parent | 698c0f24f170025470f3dcda51c11290062d78c4 (diff) |
Refine redisplay optimizations to only redisplay *some* frames/windows
rather than all of them.
* src/xdisp.c (REDISPLAY_SOME): New constant.
(redisplay_other_windows, wset_redisplay, fset_redisplay)
(bset_redisplay, bset_update_mode_line): New functions.
(message_dolog): Use bset_redisplay.
(clear_garbaged_frames): Use fset_redisplay.
(echo_area_display): Use wset_redisplay.
(buffer_shared_and_changed): Remove.
(prepare_menu_bars): Call Vpre_redisplay_function before updating
frame titles. Compute the actual set of windows redisplayed.
Don't update frame titles and menu bars for frames that don't need to
be redisplayed.
(propagate_buffer_redisplay): New function.
(AINC): New macro.
(redisplay_internal): Use it. Be more selective in the set of windows
we redisplay. Propagate windows_or_buffers_changed to
update_mode_lines a bit later to simplify the code.
(mark_window_display_accurate_1): Reset window and buffer's
`redisplay' flag.
(redisplay_window): Do nothing if neither the window nor the buffer nor
the frame needs redisplay.
* src/window.h (struct window): Add `redisplay' field.
(wset_redisplay, fset_redisplay, bset_redisplay, bset_update_mode_line)
(redisplay_other_windows, window_list): New declarations.
* src/window.c (select_window, Fset_window_start): Use wset_redisplay.
(window_list): Not static any more.
(grow_mini_window, shrink_mini_window): Use fset_redisplay.
* src/minibuf.c (read_minibuf_unwind): Don't redisplay everything.
* src/insdel.c (prepare_to_modify_buffer_1): Use bset_redisplay.
* src/frame.c (Fmake_frame_visible): Don't redisplay everything.
* src/frame.h (struct frame): Add `redisplay' field.
Move `external_menu_bar' bitfield next to other bit-fields.
(SET_FRAME_GARBAGED): Use fset_redisplay.
(SET_FRAME_VISIBLE): Don't garbage the frame;
Use redisplay_other_windows.
* src/buffer.h (struct buffer): Add `redisplay' field.
* src/buffer.c (Fforce_mode_line_update): Pay attention to the `all' flag.
(modify_overlay): Use bset_redisplay.
* src/alloc.c (gc_sweep): Don't unmark strings while sweeping symbols.
* lisp/doc-view.el (doc-view-goto-page): Update mode-line.
Diffstat (limited to 'src/minibuf.c')
-rw-r--r-- | src/minibuf.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/src/minibuf.c b/src/minibuf.c index 8eb1a2890e..c8ae8eae2a 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -865,9 +865,6 @@ read_minibuf_unwind (void) if (minibuf_level == 0) resize_mini_window (XWINDOW (window), 0); - /* Enforce full redisplay. FIXME: make it more selective. */ - windows_or_buffers_changed = 22; - /* In case the previous minibuffer displayed in this miniwindow is dead, we may keep displaying this buffer (tho it's inactive), so reset it, to make sure we don't leave around bindings and stuff which only |