For a 'struct window', replace some Lisp_Object fields to
bitfields where appropriate, remove unused fields. * window.h (struct window): Remove unused 'last_mark_x' and 'last_mark_y' fields. Rename 'mini_p' field to 'mini', change it's type from Lisp_Object to bitfield. Change type of 'force_start', 'optional_new_start', 'last_had_star', 'update_mode_line' and 'start_at_line_beg' fields from Lisp_Object to bitfield. Adjust users accordingly.
This commit is contained in:
parent
b691b884ee
commit
c98ff5dd43
8 changed files with 113 additions and 107 deletions
|
@ -1,3 +1,14 @@
|
|||
2012-06-01 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
For a 'struct window', replace some Lisp_Object fields to
|
||||
bitfields where appropriate, remove unused fields.
|
||||
* window.h (struct window): Remove unused 'last_mark_x' and
|
||||
'last_mark_y' fields. Rename 'mini_p' field to 'mini',
|
||||
change it's type from Lisp_Object to bitfield.
|
||||
Change type of 'force_start', 'optional_new_start',
|
||||
'last_had_star', 'update_mode_line' and 'start_at_line_beg'
|
||||
fields from Lisp_Object to bitfield. Adjust users accordingly.
|
||||
|
||||
2012-05-31 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Pacify gcc -Wdouble-precision when using Xaw.
|
||||
|
|
|
@ -3735,7 +3735,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
|
|||
/* If display currently starts at beginning of line,
|
||||
keep it that way. */
|
||||
if (XBUFFER (XWINDOW (selected_window)->buffer) == current_buffer)
|
||||
XWINDOW (selected_window)->start_at_line_beg = Fbolp ();
|
||||
XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ());
|
||||
|
||||
replace_handled = 1;
|
||||
}
|
||||
|
@ -3892,7 +3892,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
|
|||
/* If display currently starts at beginning of line,
|
||||
keep it that way. */
|
||||
if (XBUFFER (XWINDOW (selected_window)->buffer) == current_buffer)
|
||||
XWINDOW (selected_window)->start_at_line_beg = Fbolp ();
|
||||
XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ());
|
||||
|
||||
/* Replace the chars that we need to replace,
|
||||
and update INSERTED to equal the number of bytes
|
||||
|
|
|
@ -331,7 +331,7 @@ make_frame (int mini_p)
|
|||
mini_window = make_window ();
|
||||
XWINDOW (root_window)->next = mini_window;
|
||||
XWINDOW (mini_window)->prev = root_window;
|
||||
XWINDOW (mini_window)->mini_p = Qt;
|
||||
XWINDOW (mini_window)->mini = 1;
|
||||
XWINDOW (mini_window)->frame = frame;
|
||||
f->minibuffer_window = mini_window;
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ make_minibuffer_frame (void)
|
|||
as nil. */
|
||||
|
||||
mini_window = f->minibuffer_window = f->root_window;
|
||||
XWINDOW (mini_window)->mini_p = Qt;
|
||||
XWINDOW (mini_window)->mini = 1;
|
||||
XWINDOW (mini_window)->next = Qnil;
|
||||
XWINDOW (mini_window)->prev = Qnil;
|
||||
XWINDOW (mini_window)->frame = frame;
|
||||
|
|
|
@ -1484,10 +1484,10 @@ command_loop_1 (void)
|
|||
from that position. But also throw away beg_unchanged and
|
||||
end_unchanged information in that case, so that redisplay will
|
||||
update the whole window properly. */
|
||||
if (!NILP (XWINDOW (selected_window)->force_start))
|
||||
if (XWINDOW (selected_window)->force_start)
|
||||
{
|
||||
struct buffer *b;
|
||||
XWINDOW (selected_window)->force_start = Qnil;
|
||||
XWINDOW (selected_window)->force_start = 0;
|
||||
b = XBUFFER (XWINDOW (selected_window)->buffer);
|
||||
BUF_BEG_UNCHANGED (b) = BUF_END_UNCHANGED (b) = 0;
|
||||
}
|
||||
|
|
76
src/window.c
76
src/window.c
|
@ -1393,10 +1393,10 @@ overriding motion of point in order to display at this exact start. */)
|
|||
CHECK_NUMBER_COERCE_MARKER (pos);
|
||||
set_marker_restricted (w->start, pos, w->buffer);
|
||||
/* this is not right, but much easier than doing what is right. */
|
||||
w->start_at_line_beg = Qnil;
|
||||
w->start_at_line_beg = 0;
|
||||
if (NILP (noforce))
|
||||
w->force_start = Qt;
|
||||
w->update_mode_line = Qt;
|
||||
w->force_start = 1;
|
||||
w->update_mode_line = 1;
|
||||
XSETFASTINT (w->last_modified, 0);
|
||||
XSETFASTINT (w->last_overlay_modified, 0);
|
||||
if (!EQ (window, selected_window))
|
||||
|
@ -2472,7 +2472,7 @@ window_loop (enum window_loop type, Lisp_Object obj, int mini, Lisp_Object frame
|
|||
if (EQ (w->buffer, obj))
|
||||
{
|
||||
mark_window_display_accurate (window, 0);
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
XBUFFER (obj)->prevent_redisplay_optimizations_p = 1;
|
||||
++update_mode_lines;
|
||||
best_window = window;
|
||||
|
@ -2771,12 +2771,11 @@ window-start value is reasonable when this function is called. */)
|
|||
|
||||
set_marker_both (w->start, w->buffer, pos.bufpos, pos.bytepos);
|
||||
w->window_end_valid = Qnil;
|
||||
w->start_at_line_beg = ((pos.bytepos == BEGV_BYTE
|
||||
|| FETCH_BYTE (pos.bytepos - 1) == '\n') ? Qt
|
||||
: Qnil);
|
||||
w->start_at_line_beg = (pos.bytepos == BEGV_BYTE
|
||||
|| FETCH_BYTE (pos.bytepos - 1) == '\n');
|
||||
/* We need to do this, so that the window-scroll-functions
|
||||
get called. */
|
||||
w->optional_new_start = Qt;
|
||||
w->optional_new_start = 1;
|
||||
|
||||
set_buffer_internal (obuf);
|
||||
}
|
||||
|
@ -3006,8 +3005,8 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer, int run_hooks_p, int
|
|||
set_marker_restricted (w->start,
|
||||
make_number (b->last_window_start),
|
||||
buffer);
|
||||
w->start_at_line_beg = Qnil;
|
||||
w->force_start = Qnil;
|
||||
w->start_at_line_beg = 0;
|
||||
w->force_start = 0;
|
||||
XSETFASTINT (w->last_modified, 0);
|
||||
XSETFASTINT (w->last_overlay_modified, 0);
|
||||
}
|
||||
|
@ -3143,7 +3142,7 @@ displaying that buffer. */)
|
|||
{
|
||||
struct window *w = XWINDOW (object);
|
||||
mark_window_display_accurate (object, 0);
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
if (BUFFERP (w->buffer))
|
||||
XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1;
|
||||
++update_mode_lines;
|
||||
|
@ -3275,7 +3274,8 @@ make_window (void)
|
|||
|
||||
w = allocate_window ();
|
||||
/* Initialize all Lisp data. */
|
||||
w->frame = w->mini_p = Qnil;
|
||||
w->frame = Qnil;
|
||||
w->mini = 0;
|
||||
w->next = w->prev = w->hchild = w->vchild = w->parent = Qnil;
|
||||
XSETFASTINT (w->left_col, 0);
|
||||
XSETFASTINT (w->top_line, 0);
|
||||
|
@ -3288,7 +3288,7 @@ make_window (void)
|
|||
w->buffer = Qnil;
|
||||
w->start = Fmake_marker ();
|
||||
w->pointm = Fmake_marker ();
|
||||
w->force_start = w->optional_new_start = Qnil;
|
||||
w->force_start = w->optional_new_start = 0;
|
||||
XSETFASTINT (w->hscroll, 0);
|
||||
XSETFASTINT (w->min_hscroll, 0);
|
||||
XSETFASTINT (w->use_time, 0);
|
||||
|
@ -3296,17 +3296,18 @@ make_window (void)
|
|||
XSETFASTINT (w->sequence_number, sequence_number);
|
||||
w->temslot = w->last_modified = w->last_overlay_modified = Qnil;
|
||||
XSETFASTINT (w->last_point, 0);
|
||||
w->last_had_star = w->vertical_scroll_bar = Qnil;
|
||||
w->last_had_star = 0;
|
||||
w->vertical_scroll_bar = Qnil;
|
||||
w->left_margin_cols = w->right_margin_cols = Qnil;
|
||||
w->left_fringe_width = w->right_fringe_width = Qnil;
|
||||
w->fringes_outside_margins = Qnil;
|
||||
w->scroll_bar_width = Qnil;
|
||||
w->vertical_scroll_bar_type = Qt;
|
||||
w->last_mark_x = w->last_mark_y = Qnil;
|
||||
XSETFASTINT (w->window_end_pos, 0);
|
||||
XSETFASTINT (w->window_end_vpos, 0);
|
||||
w->window_end_valid = w->update_mode_line = Qnil;
|
||||
w->start_at_line_beg = w->display_table = w->dedicated = Qnil;
|
||||
w->window_end_valid = w->display_table = Qnil;
|
||||
w->update_mode_line = w->start_at_line_beg = 0;
|
||||
w->dedicated = Qnil;
|
||||
w->base_line_number = w->base_line_pos = w->region_showing = Qnil;
|
||||
w->column_number_displayed = w->redisplay_end_trigger = Qnil;
|
||||
w->combination_limit = w->window_parameters = Qnil;
|
||||
|
@ -4305,13 +4306,13 @@ window_scroll_pixel_based (Lisp_Object window, int n, int whole, int noerror)
|
|||
spos = min (XINT (Fline_end_position (Qnil)) + 1, ZV);
|
||||
set_marker_restricted (w->start, make_number (spos),
|
||||
w->buffer);
|
||||
w->start_at_line_beg = Qt;
|
||||
w->update_mode_line = Qt;
|
||||
w->start_at_line_beg = 1;
|
||||
w->update_mode_line = 1;
|
||||
XSETFASTINT (w->last_modified, 0);
|
||||
XSETFASTINT (w->last_overlay_modified, 0);
|
||||
/* Set force_start so that redisplay_window will run the
|
||||
window-scroll-functions. */
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -4451,14 +4452,13 @@ window_scroll_pixel_based (Lisp_Object window, int n, int whole, int noerror)
|
|||
set_marker_restricted (w->start, make_number (pos),
|
||||
w->buffer);
|
||||
bytepos = XMARKER (w->start)->bytepos;
|
||||
w->start_at_line_beg = ((pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n')
|
||||
? Qt : Qnil);
|
||||
w->update_mode_line = Qt;
|
||||
w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n');
|
||||
w->update_mode_line = 1;
|
||||
XSETFASTINT (w->last_modified, 0);
|
||||
XSETFASTINT (w->last_overlay_modified, 0);
|
||||
/* Set force_start so that redisplay_window will run the
|
||||
window-scroll-functions. */
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
}
|
||||
|
||||
/* The rest of this function uses current_y in a nonstandard way,
|
||||
|
@ -4651,13 +4651,13 @@ window_scroll_line_based (Lisp_Object window, int n, int whole, int noerror)
|
|||
max (0, min (scroll_margin, XINT (w->total_lines) / 4));
|
||||
|
||||
set_marker_restricted_both (w->start, w->buffer, pos, pos_byte);
|
||||
w->start_at_line_beg = bolp;
|
||||
w->update_mode_line = Qt;
|
||||
w->start_at_line_beg = !NILP (bolp);
|
||||
w->update_mode_line = 1;
|
||||
XSETFASTINT (w->last_modified, 0);
|
||||
XSETFASTINT (w->last_overlay_modified, 0);
|
||||
/* Set force_start so that redisplay_window will run
|
||||
the window-scroll-functions. */
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
|
||||
if (!NILP (Vscroll_preserve_screen_position)
|
||||
&& (whole || !EQ (Vscroll_preserve_screen_position, Qt)))
|
||||
|
@ -5201,12 +5201,10 @@ and redisplay normally--don't erase and redraw the frame. */)
|
|||
set_marker_both (w->start, w->buffer, charpos, bytepos);
|
||||
w->window_end_valid = Qnil;
|
||||
|
||||
w->optional_new_start = Qt;
|
||||
w->optional_new_start = 1;
|
||||
|
||||
if (bytepos == BEGV_BYTE || FETCH_BYTE (bytepos - 1) == '\n')
|
||||
w->start_at_line_beg = Qt;
|
||||
else
|
||||
w->start_at_line_beg = Qnil;
|
||||
w->start_at_line_beg = (bytepos == BEGV_BYTE ||
|
||||
FETCH_BYTE (bytepos - 1) == '\n');
|
||||
|
||||
set_buffer_internal (obuf);
|
||||
return Qnil;
|
||||
|
@ -5257,8 +5255,8 @@ zero means top of window, negative means relative to bottom of window. */)
|
|||
int height = window_internal_height (w);
|
||||
Fvertical_motion (make_number (- (height / 2)), window);
|
||||
set_marker_both (w->start, w->buffer, PT, PT_BYTE);
|
||||
w->start_at_line_beg = Fbolp ();
|
||||
w->force_start = Qt;
|
||||
w->start_at_line_beg = !NILP (Fbolp ());
|
||||
w->force_start = 1;
|
||||
}
|
||||
else
|
||||
Fgoto_char (w->start);
|
||||
|
@ -5607,7 +5605,7 @@ the return value is nil. Otherwise the value is t. */)
|
|||
/* If saved buffer is alive, install it. */
|
||||
{
|
||||
w->buffer = p->buffer;
|
||||
w->start_at_line_beg = p->start_at_line_beg;
|
||||
w->start_at_line_beg = !NILP (p->start_at_line_beg);
|
||||
set_marker_restricted (w->start, p->start, w->buffer);
|
||||
set_marker_restricted (w->pointm, p->pointm, w->buffer);
|
||||
Fset_marker (BVAR (XBUFFER (w->buffer), mark),
|
||||
|
@ -5632,7 +5630,7 @@ the return value is nil. Otherwise the value is t. */)
|
|||
set_marker_restricted_both (w->pointm, w->buffer,
|
||||
BUF_PT (XBUFFER (w->buffer)),
|
||||
BUF_PT_BYTE (XBUFFER (w->buffer)));
|
||||
w->start_at_line_beg = Qt;
|
||||
w->start_at_line_beg = 1;
|
||||
}
|
||||
else if (STRINGP (auto_buffer_name =
|
||||
Fwindow_parameter (window, Qauto_buffer_name))
|
||||
|
@ -5641,7 +5639,7 @@ the return value is nil. Otherwise the value is t. */)
|
|||
{
|
||||
set_marker_restricted (w->start, make_number (0), w->buffer);
|
||||
set_marker_restricted (w->pointm, make_number (0), w->buffer);
|
||||
w->start_at_line_beg = Qt;
|
||||
w->start_at_line_beg = 1;
|
||||
}
|
||||
else
|
||||
/* Window has no live buffer, get one. */
|
||||
|
@ -5655,7 +5653,7 @@ the return value is nil. Otherwise the value is t. */)
|
|||
range. */
|
||||
set_marker_restricted (w->start, make_number (0), w->buffer);
|
||||
set_marker_restricted (w->pointm, make_number (0), w->buffer);
|
||||
w->start_at_line_beg = Qt;
|
||||
w->start_at_line_beg = 1;
|
||||
if (!NILP (w->dedicated))
|
||||
/* Record this window as dead. */
|
||||
dead_windows = Fcons (window, dead_windows);
|
||||
|
@ -5956,7 +5954,7 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
|
|||
= !NILP (Vwindow_point_insertion_type);
|
||||
|
||||
p->start = Fcopy_marker (w->start, Qnil);
|
||||
p->start_at_line_beg = w->start_at_line_beg;
|
||||
p->start_at_line_beg = w->start_at_line_beg ? Qt : Qnil;
|
||||
|
||||
tem = BVAR (XBUFFER (w->buffer), mark);
|
||||
p->mark = Fcopy_marker (tem, Qnil);
|
||||
|
|
57
src/window.h
57
src/window.h
|
@ -94,9 +94,6 @@ struct window
|
|||
/* The frame this window is on. */
|
||||
Lisp_Object frame;
|
||||
|
||||
/* t if this window is a minibuffer window. */
|
||||
Lisp_Object mini_p;
|
||||
|
||||
/* Following (to right or down) and preceding (to left or up) child
|
||||
at same level of tree. */
|
||||
Lisp_Object next, prev;
|
||||
|
@ -144,15 +141,6 @@ struct window
|
|||
each one can have its own value of point. */
|
||||
Lisp_Object pointm;
|
||||
|
||||
/* Non-nil means next redisplay must use the value of start
|
||||
set up for it in advance. Set by scrolling commands. */
|
||||
Lisp_Object force_start;
|
||||
/* Non-nil means we have explicitly changed the value of start,
|
||||
but that the next redisplay is not obliged to use the new value.
|
||||
This is used in Fdelete_other_windows to force a call to
|
||||
Vwindow_scroll_functions; also by Frecenter with argument. */
|
||||
Lisp_Object optional_new_start;
|
||||
|
||||
/* Number of columns display within the window is scrolled to the left. */
|
||||
Lisp_Object hscroll;
|
||||
/* Minimum hscroll for automatic hscrolling. This is the value
|
||||
|
@ -176,9 +164,6 @@ struct window
|
|||
Lisp_Object last_overlay_modified;
|
||||
/* Value of point at that time. */
|
||||
Lisp_Object last_point;
|
||||
/* Non-nil if the buffer was "modified" when the window
|
||||
was last updated. */
|
||||
Lisp_Object last_had_star;
|
||||
|
||||
/* This window's vertical scroll bar. This field is only for use
|
||||
by the window-system-dependent code which implements the
|
||||
|
@ -206,11 +191,6 @@ struct window
|
|||
no scroll bar. A value of t means use frame value. */
|
||||
Lisp_Object vertical_scroll_bar_type;
|
||||
|
||||
/* Frame coords of mark as of last time display completed */
|
||||
/* May be nil if mark does not exist or was not on frame */
|
||||
Lisp_Object last_mark_x;
|
||||
Lisp_Object last_mark_y;
|
||||
|
||||
/* Z - the buffer position of the last glyph in the current matrix
|
||||
of W. Only valid if WINDOW_END_VALID is not nil. */
|
||||
Lisp_Object window_end_pos;
|
||||
|
@ -223,18 +203,13 @@ struct window
|
|||
did not get onto the frame. */
|
||||
Lisp_Object window_end_valid;
|
||||
|
||||
/* Non-nil means must regenerate mode line of this window */
|
||||
Lisp_Object update_mode_line;
|
||||
|
||||
/* Non-nil means current value of `start'
|
||||
was the beginning of a line when it was chosen. */
|
||||
Lisp_Object start_at_line_beg;
|
||||
|
||||
/* Display-table to use for displaying chars in this window.
|
||||
Nil means use the buffer's own display-table. */
|
||||
Lisp_Object display_table;
|
||||
|
||||
/* Non-nil means window is marked as dedicated. */
|
||||
/* Non-nil usually means window is marked as dedicated.
|
||||
Note Lisp code may set this to something beyond Qnil
|
||||
and Qt, so bitfield can't be used here. */
|
||||
Lisp_Object dedicated;
|
||||
|
||||
/* Line number and position of a line somewhere above the top of the
|
||||
|
@ -302,6 +277,30 @@ struct window
|
|||
/* This is handy for undrawing the cursor. */
|
||||
int phys_cursor_ascent, phys_cursor_height;
|
||||
|
||||
/* Non-zero if this window is a minibuffer window. */
|
||||
unsigned mini : 1;
|
||||
|
||||
/* Non-zero means must regenerate mode line of this window */
|
||||
unsigned update_mode_line : 1;
|
||||
|
||||
/* Non-nil if the buffer was "modified" when the window
|
||||
was last updated. */
|
||||
unsigned last_had_star : 1;
|
||||
|
||||
/* Non-zero means current value of `start'
|
||||
was the beginning of a line when it was chosen. */
|
||||
unsigned start_at_line_beg : 1;
|
||||
|
||||
/* Non-zero means next redisplay must use the value of start
|
||||
set up for it in advance. Set by scrolling commands. */
|
||||
unsigned force_start : 1;
|
||||
|
||||
/* Non-zero means we have explicitly changed the value of start,
|
||||
but that the next redisplay is not obliged to use the new value.
|
||||
This is used in Fdelete_other_windows to force a call to
|
||||
Vwindow_scroll_functions; also by Frecenter with argument. */
|
||||
unsigned optional_new_start : 1;
|
||||
|
||||
/* Non-zero means the cursor is currently displayed. This can be
|
||||
set to zero by functions overpainting the cursor image. */
|
||||
unsigned phys_cursor_on_p : 1;
|
||||
|
@ -337,7 +336,7 @@ struct window
|
|||
|
||||
/* 1 if W is a minibuffer window. */
|
||||
|
||||
#define MINI_WINDOW_P(W) (!NILP ((W)->mini_p))
|
||||
#define MINI_WINDOW_P(W) ((W)->mini)
|
||||
|
||||
/* General window layout:
|
||||
|
||||
|
|
62
src/xdisp.c
62
src/xdisp.c
|
@ -11169,7 +11169,7 @@ update_menu_bar (struct frame *f, int save_match_data, int hooks_run)
|
|||
|| update_mode_lines
|
||||
|| ((BUF_SAVE_MODIFF (XBUFFER (w->buffer))
|
||||
< BUF_MODIFF (XBUFFER (w->buffer)))
|
||||
!= !NILP (w->last_had_star))
|
||||
!= w->last_had_star)
|
||||
|| ((!NILP (Vtransient_mark_mode)
|
||||
&& !NILP (BVAR (XBUFFER (w->buffer), mark_active)))
|
||||
!= !NILP (w->region_showing)))
|
||||
|
@ -11221,11 +11221,11 @@ update_menu_bar (struct frame *f, int save_match_data, int hooks_run)
|
|||
else
|
||||
/* On a terminal screen, the menu bar is an ordinary screen
|
||||
line, and this makes it get updated. */
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
#else /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */
|
||||
/* In the non-toolkit version, the menu bar is an ordinary screen
|
||||
line, and this makes it get updated. */
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
#endif /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */
|
||||
|
||||
unbind_to (count, Qnil);
|
||||
|
@ -11363,11 +11363,11 @@ update_tool_bar (struct frame *f, int save_match_data)
|
|||
the rest of the redisplay algorithm is about the same as
|
||||
windows_or_buffers_changed anyway. */
|
||||
if (windows_or_buffers_changed
|
||||
|| !NILP (w->update_mode_line)
|
||||
|| w->update_mode_line
|
||||
|| update_mode_lines
|
||||
|| ((BUF_SAVE_MODIFF (XBUFFER (w->buffer))
|
||||
< BUF_MODIFF (XBUFFER (w->buffer)))
|
||||
!= !NILP (w->last_had_star))
|
||||
!= w->last_had_star)
|
||||
|| ((!NILP (Vtransient_mark_mode)
|
||||
&& !NILP (BVAR (XBUFFER (w->buffer), mark_active)))
|
||||
!= !NILP (w->region_showing)))
|
||||
|
@ -11418,7 +11418,7 @@ update_tool_bar (struct frame *f, int save_match_data)
|
|||
BLOCK_INPUT;
|
||||
f->tool_bar_items = new_tool_bar;
|
||||
f->n_tool_bar_items = new_n_tool_bar;
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
UNBLOCK_INPUT;
|
||||
}
|
||||
|
||||
|
@ -12967,9 +12967,9 @@ redisplay_internal (void)
|
|||
update_mode_lines++;
|
||||
|
||||
/* Detect case that we need to write or remove a star in the mode line. */
|
||||
if ((SAVE_MODIFF < MODIFF) != !NILP (w->last_had_star))
|
||||
if ((SAVE_MODIFF < MODIFF) != w->last_had_star)
|
||||
{
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
if (buffer_shared > 1)
|
||||
update_mode_lines++;
|
||||
}
|
||||
|
@ -12986,7 +12986,7 @@ redisplay_internal (void)
|
|||
&& XFASTINT (w->last_modified) >= MODIFF
|
||||
&& XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF)
|
||||
&& (XFASTINT (w->column_number_displayed) != current_column ()))
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
|
||||
unbind_to (count1, Qnil);
|
||||
|
||||
|
@ -13089,7 +13089,7 @@ redisplay_internal (void)
|
|||
tlendpos = this_line_end_pos;
|
||||
if (!consider_all_windows_p
|
||||
&& CHARPOS (tlbufpos) > 0
|
||||
&& NILP (w->update_mode_line)
|
||||
&& !w->update_mode_line
|
||||
&& !current_buffer->clip_changed
|
||||
&& !current_buffer->prevent_redisplay_optimizations_p
|
||||
&& FRAME_VISIBLE_P (XFRAME (w->frame))
|
||||
|
@ -13097,8 +13097,8 @@ redisplay_internal (void)
|
|||
/* Make sure recorded data applies to current buffer, etc. */
|
||||
&& this_line_buffer == current_buffer
|
||||
&& current_buffer == XBUFFER (w->buffer)
|
||||
&& NILP (w->force_start)
|
||||
&& NILP (w->optional_new_start)
|
||||
&& !w->force_start
|
||||
&& !w->optional_new_start
|
||||
/* Point must be on the line that we have info recorded about. */
|
||||
&& PT >= CHARPOS (tlbufpos)
|
||||
&& PT <= Z - CHARPOS (tlendpos)
|
||||
|
@ -13633,7 +13633,7 @@ mark_window_display_accurate_1 (struct window *w, int accurate_p)
|
|||
w->last_overlay_modified
|
||||
= make_number (accurate_p ? BUF_OVERLAY_MODIFF (b) : 0);
|
||||
w->last_had_star
|
||||
= BUF_MODIFF (b) > BUF_SAVE_MODIFF (b) ? Qt : Qnil;
|
||||
= BUF_MODIFF (b) > BUF_SAVE_MODIFF (b);
|
||||
|
||||
if (accurate_p)
|
||||
{
|
||||
|
@ -13662,7 +13662,7 @@ mark_window_display_accurate_1 (struct window *w, int accurate_p)
|
|||
if (accurate_p)
|
||||
{
|
||||
w->window_end_valid = w->buffer;
|
||||
w->update_mode_line = Qnil;
|
||||
w->update_mode_line = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15291,7 +15291,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
reconsider_clip_changes (w, buffer);
|
||||
|
||||
/* Has the mode line to be updated? */
|
||||
update_mode_line = (!NILP (w->update_mode_line)
|
||||
update_mode_line = (w->update_mode_line
|
||||
|| update_mode_lines
|
||||
|| buffer->clip_changed
|
||||
|| buffer->prevent_redisplay_optimizations_p);
|
||||
|
@ -15463,32 +15463,31 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
|
||||
/* If someone specified a new starting point but did not insist,
|
||||
check whether it can be used. */
|
||||
if (!NILP (w->optional_new_start)
|
||||
if (w->optional_new_start
|
||||
&& CHARPOS (startp) >= BEGV
|
||||
&& CHARPOS (startp) <= ZV)
|
||||
{
|
||||
w->optional_new_start = Qnil;
|
||||
w->optional_new_start = 0;
|
||||
start_display (&it, w, startp);
|
||||
move_it_to (&it, PT, 0, it.last_visible_y, -1,
|
||||
MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y);
|
||||
if (IT_CHARPOS (it) == PT)
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
/* IT may overshoot PT if text at PT is invisible. */
|
||||
else if (IT_CHARPOS (it) > PT && CHARPOS (startp) <= PT)
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
}
|
||||
|
||||
force_start:
|
||||
|
||||
/* Handle case where place to start displaying has been specified,
|
||||
unless the specified location is outside the accessible range. */
|
||||
if (!NILP (w->force_start)
|
||||
|| w->frozen_window_start_p)
|
||||
if (w->force_start || w->frozen_window_start_p)
|
||||
{
|
||||
/* We set this later on if we have to adjust point. */
|
||||
int new_vpos = -1;
|
||||
|
||||
w->force_start = Qnil;
|
||||
w->force_start = 0;
|
||||
w->vscroll = 0;
|
||||
w->window_end_valid = Qnil;
|
||||
|
||||
|
@ -15507,7 +15506,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
|| ! NILP (Vwindow_scroll_functions))
|
||||
{
|
||||
update_mode_line = 1;
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
startp = run_window_scroll_functions (window, startp);
|
||||
}
|
||||
|
||||
|
@ -15525,7 +15524,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
the scroll margin (bug#148) -- cyd */
|
||||
if (!try_window (window, startp, 0))
|
||||
{
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
clear_glyph_matrix (w->desired_matrix);
|
||||
goto need_larger_matrices;
|
||||
}
|
||||
|
@ -15604,7 +15603,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
}
|
||||
/* If current starting point was originally the beginning of a line
|
||||
but no longer is, find a new starting point. */
|
||||
else if (!NILP (w->start_at_line_beg)
|
||||
else if (w->start_at_line_beg
|
||||
&& !(CHARPOS (startp) <= BEGV
|
||||
|| FETCH_BYTE (BYTEPOS (startp) - 1) == '\n'))
|
||||
{
|
||||
|
@ -15651,7 +15650,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
new window start, since that would change the position under
|
||||
the mouse, resulting in an unwanted mouse-movement rather
|
||||
than a simple mouse-click. */
|
||||
if (NILP (w->start_at_line_beg)
|
||||
if (!w->start_at_line_beg
|
||||
&& NILP (do_mouse_tracking)
|
||||
&& CHARPOS (startp) > BEGV
|
||||
&& CHARPOS (startp) > BEG + beg_unchanged
|
||||
|
@ -15671,7 +15670,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
See bug#9324. */
|
||||
&& pos_visible_p (w, PT, &d1, &d2, &d3, &d4, &d5, &d6))
|
||||
{
|
||||
w->force_start = Qt;
|
||||
w->force_start = 1;
|
||||
SET_TEXT_POS_FROM_MARKER (startp, w->start);
|
||||
goto force_start;
|
||||
}
|
||||
|
@ -15732,7 +15731,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
if (!update_mode_line)
|
||||
{
|
||||
update_mode_line = 1;
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
}
|
||||
|
||||
/* Try to scroll by specified few lines. */
|
||||
|
@ -15987,9 +15986,8 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
|||
done:
|
||||
|
||||
SET_TEXT_POS_FROM_MARKER (startp, w->start);
|
||||
w->start_at_line_beg = ((CHARPOS (startp) == BEGV
|
||||
|| FETCH_BYTE (BYTEPOS (startp) - 1) == '\n')
|
||||
? Qt : Qnil);
|
||||
w->start_at_line_beg = (CHARPOS (startp) == BEGV
|
||||
|| FETCH_BYTE (BYTEPOS (startp) - 1) == '\n');
|
||||
|
||||
/* Display the mode line, if we must. */
|
||||
if ((update_mode_line
|
||||
|
@ -16206,7 +16204,7 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
|
|||
/* If bottom moved off end of frame, change mode line percentage. */
|
||||
if (XFASTINT (w->window_end_pos) <= 0
|
||||
&& Z != IT_CHARPOS (it))
|
||||
w->update_mode_line = Qt;
|
||||
w->update_mode_line = 1;
|
||||
|
||||
/* Set window_end_pos to the offset of the last character displayed
|
||||
on the window from the end of current_buffer. Set
|
||||
|
|
|
@ -1207,7 +1207,7 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
|
|||
FRAME_EXTERNAL_MENU_BAR (f) = 1;
|
||||
if (FRAME_X_P (f) && f->output_data.x->menubar_widget == 0)
|
||||
/* Make sure next redisplay shows the menu bar. */
|
||||
XWINDOW (FRAME_SELECTED_WINDOW (f))->update_mode_line = Qt;
|
||||
XWINDOW (FRAME_SELECTED_WINDOW (f))->update_mode_line = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue