mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-12 16:23:57 +00:00
* window.h (WSET): Remove.
Replace all uses with calls to new setter functions. Use INLINE_HEADER_BEGIN, INLINE_HEADER_END. (WINDOW_INLINE): New macro. (wset_buffer, wset_frame, wset_left_col, wset_next, wset_prev) (wset_redisplay_end_trigger, wset_top_line, wset_total_cols) (wset_total_lines, wset_vertical_scroll_bar) (wset_window_end_pos, wset_window_end_valid) (wset_window_end_vpos): New setter functions. * window.c (WINDOW_INLINE): Define to EXTERN_INLINE, so that the corresponding functions are compiled into code. (wset_combination_limit, wset_dedicated, wset_display_table) (wset_hchild, wset_left_fringe_width, wset_left_margin_cols) (wset_new_normal, wset_new_total, wset_next_buffers) (wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm) (wset_prev_buffers, wset_right_fringe_width) (wset_right_margin_cols, wset_scroll_bar_width, wset_start) (wset_temslot, wset_vchild, wset_vertical_scroll_bar_type) (wset_window_parameters): * xdisp.c (wset_base_line_number, wset_base_line_pos) (wset_column_number_displayed, wset_region_showing): New setter functions. Fixes: debbugs:12215
This commit is contained in:
parent
3f22b86fc7
commit
e8c17b8186
@ -1,5 +1,29 @@
|
||||
2012-08-18 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* window.h (WSET): Remove (Bug#12215).
|
||||
Replace all uses with calls to new setter functions.
|
||||
Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
|
||||
(WINDOW_INLINE): New macro.
|
||||
(wset_buffer, wset_frame, wset_left_col, wset_next, wset_prev)
|
||||
(wset_redisplay_end_trigger, wset_top_line, wset_total_cols)
|
||||
(wset_total_lines, wset_vertical_scroll_bar)
|
||||
(wset_window_end_pos, wset_window_end_valid)
|
||||
(wset_window_end_vpos): New setter functions.
|
||||
* window.c (WINDOW_INLINE):
|
||||
Define to EXTERN_INLINE, so that the corresponding functions
|
||||
are compiled into code.
|
||||
(wset_combination_limit, wset_dedicated, wset_display_table)
|
||||
(wset_hchild, wset_left_fringe_width, wset_left_margin_cols)
|
||||
(wset_new_normal, wset_new_total, wset_next_buffers)
|
||||
(wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm)
|
||||
(wset_prev_buffers, wset_right_fringe_width)
|
||||
(wset_right_margin_cols, wset_scroll_bar_width, wset_start)
|
||||
(wset_temslot, wset_vchild, wset_vertical_scroll_bar_type)
|
||||
(wset_window_parameters):
|
||||
* xdisp.c (wset_base_line_number, wset_base_line_pos)
|
||||
(wset_column_number_displayed, wset_region_showing):
|
||||
New setter functions.
|
||||
|
||||
* termhooks.h (TSET): Remove (Bug#12215).
|
||||
Replace all uses with calls to new setter functions.
|
||||
Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
|
||||
|
@ -621,7 +621,7 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
|
||||
are invalidated below. */
|
||||
if (INTEGERP (w->window_end_vpos)
|
||||
&& XFASTINT (w->window_end_vpos) >= i)
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
|
||||
while (i < matrix->nrows)
|
||||
matrix->rows[i++].enabled_p = 0;
|
||||
@ -878,7 +878,7 @@ clear_window_matrices (struct window *w, int desired_p)
|
||||
else
|
||||
{
|
||||
clear_glyph_matrix (w->current_matrix);
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1887,14 +1887,14 @@ adjust_frame_glyphs_initially (void)
|
||||
int top_margin = FRAME_TOP_MARGIN (sf);
|
||||
|
||||
/* Do it for the root window. */
|
||||
WSET (root, top_line, make_number (top_margin));
|
||||
WSET (root, total_lines, make_number (frame_lines - 1 - top_margin));
|
||||
WSET (root, total_cols, make_number (frame_cols));
|
||||
wset_top_line (root, make_number (top_margin));
|
||||
wset_total_lines (root, make_number (frame_lines - 1 - top_margin));
|
||||
wset_total_cols (root, make_number (frame_cols));
|
||||
|
||||
/* Do it for the mini-buffer window. */
|
||||
WSET (mini, top_line, make_number (frame_lines - 1));
|
||||
WSET (mini, total_lines, make_number (1));
|
||||
WSET (mini, total_cols, make_number (frame_cols));
|
||||
wset_top_line (mini, make_number (frame_lines - 1));
|
||||
wset_total_lines (mini, make_number (1));
|
||||
wset_total_cols (mini, make_number (frame_cols));
|
||||
|
||||
adjust_frame_glyphs (sf);
|
||||
glyphs_initialized_initially_p = 1;
|
||||
@ -2169,7 +2169,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
|
||||
fset_menu_bar_window (f, make_window ());
|
||||
w = XWINDOW (f->menu_bar_window);
|
||||
XSETFRAME (frame, f);
|
||||
WSET (w, frame, frame);
|
||||
wset_frame (w, frame);
|
||||
w->pseudo_window_p = 1;
|
||||
}
|
||||
else
|
||||
@ -2177,10 +2177,10 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
|
||||
|
||||
/* Set window dimensions to frame dimensions and allocate or
|
||||
adjust glyph matrices of W. */
|
||||
WSET (w, top_line, make_number (0));
|
||||
WSET (w, left_col, make_number (0));
|
||||
WSET (w, total_lines, make_number (FRAME_MENU_BAR_LINES (f)));
|
||||
WSET (w, total_cols, make_number (FRAME_TOTAL_COLS (f)));
|
||||
wset_top_line (w, make_number (0));
|
||||
wset_left_col (w, make_number (0));
|
||||
wset_total_lines (w, make_number (FRAME_MENU_BAR_LINES (f)));
|
||||
wset_total_cols (w, make_number (FRAME_TOTAL_COLS (f)));
|
||||
allocate_matrices_for_window_redisplay (w);
|
||||
}
|
||||
#endif /* not USE_X_TOOLKIT && not USE_GTK */
|
||||
@ -2197,16 +2197,16 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
|
||||
fset_tool_bar_window (f, make_window ());
|
||||
w = XWINDOW (f->tool_bar_window);
|
||||
XSETFRAME (frame, f);
|
||||
WSET (w, frame, frame);
|
||||
wset_frame (w, frame);
|
||||
w->pseudo_window_p = 1;
|
||||
}
|
||||
else
|
||||
w = XWINDOW (f->tool_bar_window);
|
||||
|
||||
WSET (w, top_line, make_number (FRAME_MENU_BAR_LINES (f)));
|
||||
WSET (w, left_col, make_number (0));
|
||||
WSET (w, total_lines, make_number (FRAME_TOOL_BAR_LINES (f)));
|
||||
WSET (w, total_cols, make_number (FRAME_TOTAL_COLS (f)));
|
||||
wset_top_line (w, make_number (FRAME_MENU_BAR_LINES (f)));
|
||||
wset_left_col (w, make_number (0));
|
||||
wset_total_lines (w, make_number (FRAME_TOOL_BAR_LINES (f)));
|
||||
wset_total_cols (w, make_number (FRAME_TOTAL_COLS (f)));
|
||||
allocate_matrices_for_window_redisplay (w);
|
||||
}
|
||||
#endif
|
||||
@ -5744,7 +5744,7 @@ change_frame_size_1 (register struct frame *f, int newheight, int newwidth, int
|
||||
FrameCols (FRAME_TTY (f)) = newwidth;
|
||||
|
||||
if (WINDOWP (f->tool_bar_window))
|
||||
WSET (XWINDOW (f->tool_bar_window), total_cols, make_number (newwidth));
|
||||
wset_total_cols (XWINDOW (f->tool_bar_window), make_number (newwidth));
|
||||
}
|
||||
|
||||
FRAME_LINES (f) = newheight;
|
||||
|
34
src/frame.c
34
src/frame.c
@ -148,8 +148,8 @@ set_menu_bar_lines_1 (Lisp_Object window, int n)
|
||||
struct window *w = XWINDOW (window);
|
||||
|
||||
w->last_modified = 0;
|
||||
WSET (w, top_line, make_number (XFASTINT (w->top_line) + n));
|
||||
WSET (w, total_lines, make_number (XFASTINT (w->total_lines) - n));
|
||||
wset_top_line (w, make_number (XFASTINT (w->top_line) + n));
|
||||
wset_total_lines (w, make_number (XFASTINT (w->total_lines) - n));
|
||||
|
||||
/* Handle just the top child in a vertical split. */
|
||||
if (!NILP (w->vchild))
|
||||
@ -305,20 +305,20 @@ make_frame (int mini_p)
|
||||
if (mini_p)
|
||||
{
|
||||
mini_window = make_window ();
|
||||
WSET (XWINDOW (root_window), next, mini_window);
|
||||
WSET (XWINDOW (mini_window), prev, root_window);
|
||||
wset_next (XWINDOW (root_window), mini_window);
|
||||
wset_prev (XWINDOW (mini_window), root_window);
|
||||
XWINDOW (mini_window)->mini = 1;
|
||||
WSET (XWINDOW (mini_window), frame, frame);
|
||||
wset_frame (XWINDOW (mini_window), frame);
|
||||
fset_minibuffer_window (f, mini_window);
|
||||
}
|
||||
else
|
||||
{
|
||||
mini_window = Qnil;
|
||||
WSET (XWINDOW (root_window), next, Qnil);
|
||||
wset_next (XWINDOW (root_window), Qnil);
|
||||
fset_minibuffer_window (f, Qnil);
|
||||
}
|
||||
|
||||
WSET (XWINDOW (root_window), frame, frame);
|
||||
wset_frame (XWINDOW (root_window), frame);
|
||||
|
||||
/* 10 is arbitrary,
|
||||
just so that there is "something there."
|
||||
@ -327,21 +327,21 @@ make_frame (int mini_p)
|
||||
SET_FRAME_COLS (f, 10);
|
||||
FRAME_LINES (f) = 10;
|
||||
|
||||
WSET (XWINDOW (root_window), total_cols, make_number (10));
|
||||
WSET (XWINDOW (root_window), total_lines, make_number (mini_p ? 9 : 10));
|
||||
wset_total_cols (XWINDOW (root_window), make_number (10));
|
||||
wset_total_lines (XWINDOW (root_window), make_number (mini_p ? 9 : 10));
|
||||
|
||||
if (mini_p)
|
||||
{
|
||||
WSET (XWINDOW (mini_window), total_cols, make_number (10));
|
||||
WSET (XWINDOW (mini_window), top_line, make_number (9));
|
||||
WSET (XWINDOW (mini_window), total_lines, make_number (1));
|
||||
wset_total_cols (XWINDOW (mini_window), make_number (10));
|
||||
wset_top_line (XWINDOW (mini_window), make_number (9));
|
||||
wset_total_lines (XWINDOW (mini_window), make_number (1));
|
||||
}
|
||||
|
||||
/* Choose a buffer for the frame's root window. */
|
||||
{
|
||||
Lisp_Object buf;
|
||||
|
||||
WSET (XWINDOW (root_window), buffer, Qt);
|
||||
wset_buffer (XWINDOW (root_window), Qt);
|
||||
buf = Fcurrent_buffer ();
|
||||
/* If buf is a 'hidden' buffer (i.e. one whose name starts with
|
||||
a space), try to find another one. */
|
||||
@ -360,7 +360,7 @@ make_frame (int mini_p)
|
||||
|
||||
if (mini_p)
|
||||
{
|
||||
WSET (XWINDOW (mini_window), buffer, Qt);
|
||||
wset_buffer (XWINDOW (mini_window), Qt);
|
||||
set_window_buffer (mini_window,
|
||||
(NILP (Vminibuffer_list)
|
||||
? get_minibuffer (0)
|
||||
@ -458,9 +458,9 @@ make_minibuffer_frame (void)
|
||||
mini_window = f->root_window;
|
||||
fset_minibuffer_window (f, mini_window);
|
||||
XWINDOW (mini_window)->mini = 1;
|
||||
WSET (XWINDOW (mini_window), next, Qnil);
|
||||
WSET (XWINDOW (mini_window), prev, Qnil);
|
||||
WSET (XWINDOW (mini_window), frame, frame);
|
||||
wset_next (XWINDOW (mini_window), Qnil);
|
||||
wset_prev (XWINDOW (mini_window), Qnil);
|
||||
wset_frame (XWINDOW (mini_window), frame);
|
||||
|
||||
/* Put the proper buffer in that window. */
|
||||
|
||||
|
@ -2003,7 +2003,7 @@ whether or not it is currently displayed in some window. */)
|
||||
old_buffer = w->buffer;
|
||||
old_charpos = XMARKER (w->pointm)->charpos;
|
||||
old_bytepos = XMARKER (w->pointm)->bytepos;
|
||||
WSET (w, buffer, Fcurrent_buffer ());
|
||||
wset_buffer (w, Fcurrent_buffer ());
|
||||
set_marker_both (w->pointm, w->buffer,
|
||||
BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer));
|
||||
}
|
||||
@ -2146,7 +2146,7 @@ whether or not it is currently displayed in some window. */)
|
||||
|
||||
if (BUFFERP (old_buffer))
|
||||
{
|
||||
WSET (w, buffer, old_buffer);
|
||||
wset_buffer (w, old_buffer);
|
||||
set_marker_both (w->pointm, w->buffer,
|
||||
old_charpos, old_bytepos);
|
||||
}
|
||||
|
@ -3698,7 +3698,7 @@ overwriting cursor (usually when cursor on a tab) */
|
||||
{
|
||||
bar = XNS_SCROLL_BAR (window->vertical_scroll_bar);
|
||||
[bar removeFromSuperview];
|
||||
WSET (window, vertical_scroll_bar, Qnil);
|
||||
wset_vertical_scroll_bar (window, Qnil);
|
||||
}
|
||||
ns_clear_frame_area (f, sb_left, top, width, height);
|
||||
UNBLOCK_INPUT;
|
||||
@ -3709,7 +3709,7 @@ overwriting cursor (usually when cursor on a tab) */
|
||||
{
|
||||
ns_clear_frame_area (f, sb_left, top, width, height);
|
||||
bar = [[EmacsScroller alloc] initFrame: r window: win];
|
||||
WSET (window, vertical_scroll_bar, make_save_value (bar, 0));
|
||||
wset_vertical_scroll_bar (window, make_save_value (bar, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -6388,7 +6388,7 @@ - (void)dealloc
|
||||
{
|
||||
NSTRACE (EmacsScroller_dealloc);
|
||||
if (!NILP (win))
|
||||
WSET (XWINDOW (win), vertical_scroll_bar, Qnil);
|
||||
wset_vertical_scroll_bar (XWINDOW (win), Qnil);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
14
src/w32fns.c
14
src/w32fns.c
@ -5647,8 +5647,8 @@ Text larger than the specified size is clipped. */)
|
||||
|
||||
/* Set up the frame's root window. */
|
||||
w = XWINDOW (FRAME_ROOT_WINDOW (f));
|
||||
WSET (w, left_col, make_number (0));
|
||||
WSET (w, top_line, make_number (0));
|
||||
wset_left_col (w, make_number (0));
|
||||
wset_top_line (w, make_number (0));
|
||||
|
||||
if (CONSP (Vx_max_tooltip_size)
|
||||
&& INTEGERP (XCAR (Vx_max_tooltip_size))
|
||||
@ -5656,13 +5656,13 @@ Text larger than the specified size is clipped. */)
|
||||
&& INTEGERP (XCDR (Vx_max_tooltip_size))
|
||||
&& XINT (XCDR (Vx_max_tooltip_size)) > 0)
|
||||
{
|
||||
WSET (w, total_cols, XCAR (Vx_max_tooltip_size));
|
||||
WSET (w, total_lines, XCDR (Vx_max_tooltip_size));
|
||||
wset_total_cols (w, XCAR (Vx_max_tooltip_size));
|
||||
wset_total_lines (w, XCDR (Vx_max_tooltip_size));
|
||||
}
|
||||
else
|
||||
{
|
||||
WSET (w, total_cols, make_number (80));
|
||||
WSET (w, total_lines, make_number (40));
|
||||
wset_total_cols (w, make_number (80));
|
||||
wset_total_lines (w, make_number (40));
|
||||
}
|
||||
|
||||
FRAME_TOTAL_COLS (f) = XINT (w->total_cols);
|
||||
@ -5733,7 +5733,7 @@ Text larger than the specified size is clipped. */)
|
||||
/* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
|
||||
not in pixels. */
|
||||
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
|
||||
WSET (w, total_cols, make_number (width));
|
||||
wset_total_cols (w, make_number (width));
|
||||
FRAME_TOTAL_COLS (f) = width;
|
||||
adjust_glyphs (f);
|
||||
w->pseudo_window_p = 1;
|
||||
|
@ -3670,7 +3670,7 @@ x_scroll_bar_remove (struct scroll_bar *bar)
|
||||
my_destroy_window (f, SCROLL_BAR_W32_WINDOW (bar));
|
||||
|
||||
/* Dissociate this scroll bar from its window. */
|
||||
WSET (XWINDOW (bar->window), vertical_scroll_bar, Qnil);
|
||||
wset_vertical_scroll_bar (XWINDOW (bar->window), Qnil);
|
||||
|
||||
UNBLOCK_INPUT;
|
||||
}
|
||||
@ -3808,7 +3808,7 @@ w32_set_vertical_scroll_bar (struct window *w,
|
||||
|
||||
w32_set_scroll_bar_thumb (bar, portion, position, whole);
|
||||
XSETVECTOR (barobj, bar);
|
||||
WSET (w, vertical_scroll_bar, barobj);
|
||||
wset_vertical_scroll_bar (w, barobj);
|
||||
}
|
||||
|
||||
|
||||
|
585
src/window.c
585
src/window.c
File diff suppressed because it is too large
Load Diff
80
src/window.h
80
src/window.h
@ -22,6 +22,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "dispextern.h"
|
||||
|
||||
INLINE_HEADER_BEGIN
|
||||
#ifndef WINDOW_INLINE
|
||||
# define WINDOW_INLINE INLINE
|
||||
#endif
|
||||
|
||||
extern Lisp_Object Qleft, Qright;
|
||||
|
||||
/* Windows are allocated as if they were vectors, but then the
|
||||
@ -86,10 +91,6 @@ struct cursor_pos
|
||||
int hpos, vpos;
|
||||
};
|
||||
|
||||
/* Most code should use this macro to set Lisp fields in struct window. */
|
||||
|
||||
#define WSET(w, field, value) ((w)->field = (value))
|
||||
|
||||
struct window
|
||||
{
|
||||
/* This is for Lisp; the terminal code does not refer to it. */
|
||||
@ -348,6 +349,75 @@ struct window
|
||||
ptrdiff_t window_end_bytepos;
|
||||
};
|
||||
|
||||
/* Most code should use these functions to set Lisp fields in struct
|
||||
window. */
|
||||
WINDOW_INLINE void
|
||||
wset_buffer (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->buffer = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_frame (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->frame = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_left_col (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->left_col = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_next (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->next = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_prev (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->prev = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_redisplay_end_trigger (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->redisplay_end_trigger = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_top_line (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->top_line = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_total_cols (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->total_cols = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_total_lines (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->total_lines = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_vertical_scroll_bar (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->vertical_scroll_bar = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_window_end_pos (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->window_end_pos = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_window_end_valid (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->window_end_valid = val;
|
||||
}
|
||||
WINDOW_INLINE void
|
||||
wset_window_end_vpos (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->window_end_vpos = val;
|
||||
}
|
||||
|
||||
|
||||
/* 1 if W is a minibuffer window. */
|
||||
|
||||
#define MINI_WINDOW_P(W) ((W)->mini)
|
||||
@ -916,4 +986,6 @@ extern void init_window (void);
|
||||
extern void syms_of_window (void);
|
||||
extern void keys_of_window (void);
|
||||
|
||||
INLINE_HEADER_END
|
||||
|
||||
#endif /* not WINDOW_H_INCLUDED */
|
||||
|
176
src/xdisp.c
176
src/xdisp.c
@ -365,6 +365,28 @@ Lisp_Object Qcenter;
|
||||
static Lisp_Object Qmargin, Qpointer;
|
||||
static Lisp_Object Qline_height;
|
||||
|
||||
/* These setters are used only in this file, so they can be private. */
|
||||
static inline void
|
||||
wset_base_line_number (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->base_line_number = val;
|
||||
}
|
||||
static inline void
|
||||
wset_base_line_pos (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->base_line_pos = val;
|
||||
}
|
||||
static inline void
|
||||
wset_column_number_displayed (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->column_number_displayed = val;
|
||||
}
|
||||
static inline void
|
||||
wset_region_showing (struct window *w, Lisp_Object val)
|
||||
{
|
||||
w->region_showing = val;
|
||||
}
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
||||
/* Test if overflow newline into fringe. Called with iterator IT
|
||||
@ -7981,7 +8003,7 @@ run_redisplay_end_trigger_hook (struct it *it)
|
||||
|
||||
/* Since we are *trying* to run these functions, don't try to run
|
||||
them again, even if they get an error. */
|
||||
WSET (it->w, redisplay_end_trigger, Qnil);
|
||||
wset_redisplay_end_trigger (it->w, Qnil);
|
||||
Frun_hook_with_args (3, args);
|
||||
|
||||
/* Notice if it changed the face of the character we are on. */
|
||||
@ -9969,7 +9991,7 @@ with_echo_area_buffer (struct window *w, int which,
|
||||
set_buffer_internal_1 (XBUFFER (buffer));
|
||||
if (w)
|
||||
{
|
||||
WSET (w, buffer, buffer);
|
||||
wset_buffer (w, buffer);
|
||||
set_marker_both (w->pointm, buffer, BEG, BEG_BYTE);
|
||||
}
|
||||
|
||||
@ -10054,7 +10076,7 @@ unwind_with_echo_area_buffer (Lisp_Object vector)
|
||||
charpos = AREF (vector, 5);
|
||||
bytepos = AREF (vector, 6);
|
||||
|
||||
WSET (w, buffer, buffer);
|
||||
wset_buffer (w, buffer);
|
||||
set_marker_both (w->pointm, buffer,
|
||||
XFASTINT (charpos), XFASTINT (bytepos));
|
||||
}
|
||||
@ -13266,12 +13288,12 @@ redisplay_internal (void)
|
||||
if ((it.glyph_row - 1)->displays_text_p)
|
||||
{
|
||||
if (XFASTINT (w->window_end_vpos) < this_line_vpos)
|
||||
WSET (w, window_end_vpos, make_number (this_line_vpos));
|
||||
wset_window_end_vpos (w, make_number (this_line_vpos));
|
||||
}
|
||||
else if (XFASTINT (w->window_end_vpos) == this_line_vpos
|
||||
&& this_line_vpos > 0)
|
||||
WSET (w, window_end_vpos, make_number (this_line_vpos - 1));
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_vpos (w, make_number (this_line_vpos - 1));
|
||||
wset_window_end_valid (w, Qnil);
|
||||
|
||||
/* Update hint: No need to try to scroll in update_window. */
|
||||
w->desired_matrix->no_scrolling_p = 1;
|
||||
@ -13737,7 +13759,7 @@ mark_window_display_accurate_1 (struct window *w, int accurate_p)
|
||||
|
||||
if (accurate_p)
|
||||
{
|
||||
WSET (w, window_end_valid, w->buffer);
|
||||
wset_window_end_valid (w, w->buffer);
|
||||
w->update_mode_line = 0;
|
||||
}
|
||||
}
|
||||
@ -14845,7 +14867,7 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
|
||||
if (!just_this_one_p
|
||||
|| current_buffer->clip_changed
|
||||
|| BEG_UNCHANGED < CHARPOS (startp))
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
|
||||
/* If cursor ends up on a partially visible line,
|
||||
treat that as being off the bottom of the screen. */
|
||||
@ -15470,7 +15492,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
||||
if (XMARKER (w->start)->buffer == current_buffer)
|
||||
compute_window_start_on_continuation_line (w);
|
||||
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
}
|
||||
|
||||
/* Some sanity checks. */
|
||||
@ -15581,11 +15603,11 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
||||
|
||||
w->force_start = 0;
|
||||
w->vscroll = 0;
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
|
||||
/* Forget any recorded base line for line number display. */
|
||||
if (!buffer_unchanged_p)
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
|
||||
/* Redisplay the mode line. Select the buffer properly for that.
|
||||
Also, run the hook window-scroll-functions
|
||||
@ -15799,7 +15821,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
||||
|| current_buffer->clip_changed
|
||||
|| BEG_UNCHANGED < CHARPOS (startp))
|
||||
/* Forget any recorded base line for line number display. */
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
|
||||
if (!cursor_row_fully_visible_p (w, 1, 0))
|
||||
{
|
||||
@ -15870,7 +15892,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
||||
|
||||
/* Forget any previously recorded base line for line number display. */
|
||||
if (!buffer_unchanged_p)
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
|
||||
/* Determine the window start relative to point. */
|
||||
init_iterator (&it, w, PT, PT_BYTE, NULL, DEFAULT_FACE_ID);
|
||||
@ -16128,8 +16150,8 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
|
||||
if (!line_number_displayed
|
||||
&& !BUFFERP (w->base_line_pos))
|
||||
{
|
||||
WSET (w, base_line_pos, Qnil);
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_pos (w, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
}
|
||||
|
||||
finish_menu_bars:
|
||||
@ -16306,10 +16328,10 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
|
||||
eassert (MATRIX_ROW_DISPLAYS_TEXT_P (last_text_row));
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_text_row);
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_text_row, w->desired_matrix)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_text_row, w->desired_matrix)));
|
||||
eassert
|
||||
(MATRIX_ROW (w->desired_matrix,
|
||||
XFASTINT (w->window_end_vpos))->displays_text_p);
|
||||
@ -16317,12 +16339,12 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
|
||||
else
|
||||
{
|
||||
w->window_end_bytepos = Z_BYTE - ZV_BYTE;
|
||||
WSET (w, window_end_pos, make_number (Z - ZV));
|
||||
WSET (w, window_end_vpos, make_number (0));
|
||||
wset_window_end_pos (w, make_number (Z - ZV));
|
||||
wset_window_end_vpos (w, make_number (0));
|
||||
}
|
||||
|
||||
/* But that is not valid info until redisplay finishes. */
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -16546,28 +16568,31 @@ try_window_reusing_current_matrix (struct window *w)
|
||||
{
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_reused_text_row);
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_reused_text_row)));
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_reused_text_row, w->current_matrix)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z
|
||||
- MATRIX_ROW_END_CHARPOS (last_reused_text_row)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_reused_text_row,
|
||||
w->current_matrix)));
|
||||
}
|
||||
else if (last_text_row)
|
||||
{
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_text_row);
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_text_row, w->desired_matrix)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_text_row,
|
||||
w->desired_matrix)));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This window must be completely empty. */
|
||||
w->window_end_bytepos = Z_BYTE - ZV_BYTE;
|
||||
WSET (w, window_end_pos, make_number (Z - ZV));
|
||||
WSET (w, window_end_vpos, make_number (0));
|
||||
wset_window_end_pos (w, make_number (Z - ZV));
|
||||
wset_window_end_vpos (w, make_number (0));
|
||||
}
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
|
||||
/* Update hint: don't try scrolling again in update_window. */
|
||||
w->desired_matrix->no_scrolling_p = 1;
|
||||
@ -16748,18 +16773,19 @@ try_window_reusing_current_matrix (struct window *w)
|
||||
{
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_text_row);
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_text_row, w->desired_matrix)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_text_row,
|
||||
w->desired_matrix)));
|
||||
}
|
||||
else
|
||||
{
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (XFASTINT (w->window_end_vpos) - nrows_scrolled));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (XFASTINT (w->window_end_vpos) - nrows_scrolled));
|
||||
}
|
||||
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
w->desired_matrix->no_scrolling_p = 1;
|
||||
|
||||
#ifdef GLYPH_DEBUG
|
||||
@ -17331,8 +17357,8 @@ try_window_id (struct window *w)
|
||||
{
|
||||
/* We have to compute the window end anew since text
|
||||
could have been added/removed after it. */
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (row);
|
||||
|
||||
@ -17766,21 +17792,22 @@ try_window_id (struct window *w)
|
||||
first_unchanged_at_end_row);
|
||||
eassert (row && MATRIX_ROW_DISPLAYS_TEXT_P (row));
|
||||
|
||||
WSET (w, window_end_pos, make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
wset_window_end_pos (w, make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
w->window_end_bytepos = Z_BYTE - MATRIX_ROW_END_BYTEPOS (row);
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (row, w->current_matrix)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (row, w->current_matrix)));
|
||||
eassert (w->window_end_bytepos >= 0);
|
||||
IF_DEBUG (debug_method_add (w, "A"));
|
||||
}
|
||||
else if (last_text_row_at_end)
|
||||
{
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row_at_end)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row_at_end)));
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_text_row_at_end);
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_text_row_at_end, desired_matrix)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_text_row_at_end,
|
||||
desired_matrix)));
|
||||
eassert (w->window_end_bytepos >= 0);
|
||||
IF_DEBUG (debug_method_add (w, "B"));
|
||||
}
|
||||
@ -17789,12 +17816,12 @@ try_window_id (struct window *w)
|
||||
/* We have displayed either to the end of the window or at the
|
||||
end of the window, i.e. the last row with text is to be found
|
||||
in the desired matrix. */
|
||||
WSET (w, window_end_pos,
|
||||
make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
wset_window_end_pos
|
||||
(w, make_number (Z - MATRIX_ROW_END_CHARPOS (last_text_row)));
|
||||
w->window_end_bytepos
|
||||
= Z_BYTE - MATRIX_ROW_END_BYTEPOS (last_text_row);
|
||||
WSET (w, window_end_vpos,
|
||||
make_number (MATRIX_ROW_VPOS (last_text_row, desired_matrix)));
|
||||
wset_window_end_vpos
|
||||
(w, make_number (MATRIX_ROW_VPOS (last_text_row, desired_matrix)));
|
||||
eassert (w->window_end_bytepos >= 0);
|
||||
}
|
||||
else if (first_unchanged_at_end_row == NULL
|
||||
@ -17822,8 +17849,8 @@ try_window_id (struct window *w)
|
||||
}
|
||||
|
||||
eassert (row != NULL);
|
||||
WSET (w, window_end_vpos, make_number (vpos + 1));
|
||||
WSET (w, window_end_pos, make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
wset_window_end_vpos (w, make_number (vpos + 1));
|
||||
wset_window_end_pos (w, make_number (Z - MATRIX_ROW_END_CHARPOS (row)));
|
||||
w->window_end_bytepos = Z_BYTE - MATRIX_ROW_END_BYTEPOS (row);
|
||||
eassert (w->window_end_bytepos >= 0);
|
||||
IF_DEBUG (debug_method_add (w, "C"));
|
||||
@ -17835,7 +17862,7 @@ try_window_id (struct window *w)
|
||||
debug_end_vpos = XFASTINT (w->window_end_vpos));
|
||||
|
||||
/* Record that display has not been completed. */
|
||||
WSET (w, window_end_valid, Qnil);
|
||||
wset_window_end_valid (w, Qnil);
|
||||
w->desired_matrix->no_scrolling_p = 1;
|
||||
return 3;
|
||||
|
||||
@ -19248,7 +19275,7 @@ display_line (struct it *it)
|
||||
}
|
||||
|
||||
/* Is IT->w showing the region? */
|
||||
WSET (it->w, region_showing, it->region_beg_charpos > 0 ? Qt : Qnil);
|
||||
wset_region_showing (it->w, it->region_beg_charpos > 0 ? Qt : Qnil);
|
||||
|
||||
/* Clear the result glyph row and enable it. */
|
||||
prepare_desired_row (row);
|
||||
@ -20252,7 +20279,7 @@ display_mode_lines (struct window *w)
|
||||
|
||||
/* These will be set while the mode line specs are processed. */
|
||||
line_number_displayed = 0;
|
||||
WSET (w, column_number_displayed, Qnil);
|
||||
wset_column_number_displayed (w, Qnil);
|
||||
|
||||
if (WINDOW_WANTS_MODELINE_P (w))
|
||||
{
|
||||
@ -21388,7 +21415,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
|
||||
else
|
||||
{
|
||||
ptrdiff_t col = current_column ();
|
||||
WSET (w, column_number_displayed, make_number (col));
|
||||
wset_column_number_displayed (w, make_number (col));
|
||||
pint2str (decode_mode_spec_buf, field_width, col);
|
||||
return decode_mode_spec_buf;
|
||||
}
|
||||
@ -21451,14 +21478,14 @@ decode_mode_spec (struct window *w, register int c, int field_width,
|
||||
goto no_value;
|
||||
/* But do forget it, if the window shows a different buffer now. */
|
||||
else if (BUFFERP (w->base_line_pos))
|
||||
WSET (w, base_line_pos, Qnil);
|
||||
wset_base_line_pos (w, Qnil);
|
||||
|
||||
/* If the buffer is very big, don't waste time. */
|
||||
if (INTEGERP (Vline_number_display_limit)
|
||||
&& BUF_ZV (b) - BUF_BEGV (b) > XINT (Vline_number_display_limit))
|
||||
{
|
||||
WSET (w, base_line_pos, Qnil);
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_pos (w, Qnil);
|
||||
wset_base_line_number (w, Qnil);
|
||||
goto no_value;
|
||||
}
|
||||
|
||||
@ -21490,8 +21517,8 @@ decode_mode_spec (struct window *w, register int c, int field_width,
|
||||
go back past it. */
|
||||
if (startpos == BUF_BEGV (b))
|
||||
{
|
||||
WSET (w, base_line_number, make_number (topline));
|
||||
WSET (w, base_line_pos, make_number (BUF_BEGV (b)));
|
||||
wset_base_line_number (w, make_number (topline));
|
||||
wset_base_line_pos (w, make_number (BUF_BEGV (b)));
|
||||
}
|
||||
else if (nlines < height + 25 || nlines > height * 3 + 50
|
||||
|| linepos == BUF_BEGV (b))
|
||||
@ -21517,13 +21544,13 @@ decode_mode_spec (struct window *w, register int c, int field_width,
|
||||
give up on line numbers for this window. */
|
||||
if (position == limit_byte && limit == startpos - distance)
|
||||
{
|
||||
WSET (w, base_line_pos, w->buffer);
|
||||
WSET (w, base_line_number, Qnil);
|
||||
wset_base_line_pos (w, w->buffer);
|
||||
wset_base_line_number (w, Qnil);
|
||||
goto no_value;
|
||||
}
|
||||
|
||||
WSET (w, base_line_number, make_number (topline - nlines));
|
||||
WSET (w, base_line_pos, make_number (BYTE_TO_CHAR (position)));
|
||||
wset_base_line_number (w, make_number (topline - nlines));
|
||||
wset_base_line_pos (w, make_number (BYTE_TO_CHAR (position)));
|
||||
}
|
||||
|
||||
/* Now count lines from the start pos to point. */
|
||||
@ -29288,12 +29315,13 @@ init_xdisp (void)
|
||||
|
||||
echo_area_window = minibuf_window;
|
||||
|
||||
WSET (r, top_line, make_number (FRAME_TOP_MARGIN (f)));
|
||||
WSET (r, total_lines, make_number (FRAME_LINES (f) - 1 - FRAME_TOP_MARGIN (f)));
|
||||
WSET (r, total_cols, make_number (FRAME_COLS (f)));
|
||||
WSET (m, top_line, make_number (FRAME_LINES (f) - 1));
|
||||
WSET (m, total_lines, make_number (1));
|
||||
WSET (m, total_cols, make_number (FRAME_COLS (f)));
|
||||
wset_top_line (r, make_number (FRAME_TOP_MARGIN (f)));
|
||||
wset_total_lines
|
||||
(r, make_number (FRAME_LINES (f) - 1 - FRAME_TOP_MARGIN (f)));
|
||||
wset_total_cols (r, make_number (FRAME_COLS (f)));
|
||||
wset_top_line (m, make_number (FRAME_LINES (f) - 1));
|
||||
wset_total_lines (m, make_number (1));
|
||||
wset_total_cols (m, make_number (FRAME_COLS (f)));
|
||||
|
||||
scratch_glyph_row.glyphs[TEXT_AREA] = scratch_glyphs;
|
||||
scratch_glyph_row.glyphs[TEXT_AREA + 1]
|
||||
|
14
src/xfns.c
14
src/xfns.c
@ -5064,20 +5064,20 @@ Text larger than the specified size is clipped. */)
|
||||
|
||||
/* Set up the frame's root window. */
|
||||
w = XWINDOW (FRAME_ROOT_WINDOW (f));
|
||||
WSET (w, left_col, make_number (0));
|
||||
WSET (w, top_line, make_number (0));
|
||||
wset_left_col (w, make_number (0));
|
||||
wset_top_line (w, make_number (0));
|
||||
|
||||
if (CONSP (Vx_max_tooltip_size)
|
||||
&& RANGED_INTEGERP (1, XCAR (Vx_max_tooltip_size), INT_MAX)
|
||||
&& RANGED_INTEGERP (1, XCDR (Vx_max_tooltip_size), INT_MAX))
|
||||
{
|
||||
WSET (w, total_cols, XCAR (Vx_max_tooltip_size));
|
||||
WSET (w, total_lines, XCDR (Vx_max_tooltip_size));
|
||||
wset_total_cols (w, XCAR (Vx_max_tooltip_size));
|
||||
wset_total_lines (w, XCDR (Vx_max_tooltip_size));
|
||||
}
|
||||
else
|
||||
{
|
||||
WSET (w, total_cols, make_number (80));
|
||||
WSET (w, total_lines, make_number (40));
|
||||
wset_total_cols (w, make_number (80));
|
||||
wset_total_lines (w, make_number (40));
|
||||
}
|
||||
|
||||
FRAME_TOTAL_COLS (f) = XINT (w->total_cols);
|
||||
@ -5147,7 +5147,7 @@ Text larger than the specified size is clipped. */)
|
||||
/* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
|
||||
not in pixels. */
|
||||
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
|
||||
WSET (w, total_cols, make_number (width));
|
||||
wset_total_cols (w, make_number (width));
|
||||
FRAME_TOTAL_COLS (f) = width;
|
||||
adjust_glyphs (f);
|
||||
clear_glyph_matrix (w->desired_matrix);
|
||||
|
@ -5181,7 +5181,7 @@ x_scroll_bar_remove (struct scroll_bar *bar)
|
||||
#endif
|
||||
|
||||
/* Dissociate this scroll bar from its window. */
|
||||
WSET (XWINDOW (bar->window), vertical_scroll_bar, Qnil);
|
||||
wset_vertical_scroll_bar (XWINDOW (bar->window), Qnil);
|
||||
|
||||
UNBLOCK_INPUT;
|
||||
}
|
||||
@ -5395,7 +5395,7 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio
|
||||
#endif /* not USE_TOOLKIT_SCROLL_BARS */
|
||||
|
||||
XSETVECTOR (barobj, bar);
|
||||
WSET (w, vertical_scroll_bar, barobj);
|
||||
wset_vertical_scroll_bar (w, barobj);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user