34 |
calling Lisp functions like `sit-for'. The C function `redisplay' |
calling Lisp functions like `sit-for'. The C function `redisplay' |
35 |
in xdisp.c is the only entry into the inner redisplay code. (Or, |
in xdisp.c is the only entry into the inner redisplay code. (Or, |
36 |
let's say almost---see the description of direct update |
let's say almost---see the description of direct update |
37 |
operations, below.). |
operations, below.) |
38 |
|
|
39 |
The following diagram shows how redisplay code is invoked. As you |
The following diagram shows how redisplay code is invoked. As you |
40 |
can see, Lisp calls redisplay and vice versa. Under window systems |
can see, Lisp calls redisplay and vice versa. Under window systems |
260 |
/* Names of text properties relevant for redisplay. */ |
/* Names of text properties relevant for redisplay. */ |
261 |
|
|
262 |
Lisp_Object Qdisplay, Qrelative_width, Qalign_to; |
Lisp_Object Qdisplay, Qrelative_width, Qalign_to; |
263 |
extern Lisp_Object Qface, Qinvisible, Qimage, Qwidth; |
extern Lisp_Object Qface, Qinvisible, Qwidth; |
264 |
|
|
265 |
/* Symbols used in text property values. */ |
/* Symbols used in text property values. */ |
266 |
|
|
385 |
|
|
386 |
static int scroll_step; |
static int scroll_step; |
387 |
|
|
388 |
/* Non-0 means scroll just far enough to bring point back on the |
/* Nonzero means scroll just far enough to bring point back on the |
389 |
screen, when appropriate. */ |
screen, when appropriate. */ |
390 |
|
|
391 |
static int scroll_conservatively; |
static int scroll_conservatively; |
443 |
|
|
444 |
int message_enable_multibyte; |
int message_enable_multibyte; |
445 |
|
|
446 |
/* True if we should redraw the mode lines on the next redisplay. */ |
/* Nonzero if we should redraw the mode lines on the next redisplay. */ |
447 |
|
|
448 |
int update_mode_lines; |
int update_mode_lines; |
449 |
|
|
450 |
/* Nonzero if window sizes or contents have changed since last |
/* Nonzero if window sizes or contents have changed since last |
451 |
redisplay that finished */ |
redisplay that finished. */ |
452 |
|
|
453 |
int windows_or_buffers_changed; |
int windows_or_buffers_changed; |
454 |
|
|
461 |
|
|
462 |
Lisp_Object Vline_number_display_limit; |
Lisp_Object Vline_number_display_limit; |
463 |
|
|
464 |
/* line width to consider when repostioning for line number display */ |
/* Line width to consider when repositioning for line number display. */ |
465 |
|
|
466 |
static int line_number_display_limit_width; |
static int line_number_display_limit_width; |
467 |
|
|
869 |
|
|
870 |
|
|
871 |
/* Return the pixel height of the display area of window W, not |
/* Return the pixel height of the display area of window W, not |
872 |
including mode lines of W, if any.. */ |
including mode lines of W, if any. */ |
873 |
|
|
874 |
INLINE int |
INLINE int |
875 |
window_box_height (w) |
window_box_height (w) |
2302 |
|
|
2303 |
/* Is this a start of a run of characters with box face? |
/* Is this a start of a run of characters with box face? |
2304 |
Caveat: this can be called for a freshly initialized |
Caveat: this can be called for a freshly initialized |
2305 |
iterator; face_id is -1 is this case. We know that the new |
iterator; face_id is -1 in this case. We know that the new |
2306 |
face will not change until limit, i.e. if the new face has a |
face will not change until limit, i.e. if the new face has a |
2307 |
box, all characters up to limit will have one. But, as |
box, all characters up to limit will have one. But, as |
2308 |
usual, we don't know whether limit is really the end. */ |
usual, we don't know whether limit is really the end. */ |
2812 |
If PROP is a `space' or `image' sub-property, set *POSITION to the |
If PROP is a `space' or `image' sub-property, set *POSITION to the |
2813 |
end position of the `display' property. |
end position of the `display' property. |
2814 |
|
|
2815 |
Value is non-zero something was found which replaces the display |
Value is non-zero if something was found which replaces the display |
2816 |
of buffer or string text. */ |
of buffer or string text. */ |
2817 |
|
|
2818 |
static int |
static int |
2829 |
Lisp_Object form; |
Lisp_Object form; |
2830 |
|
|
2831 |
/* If PROP is a list of the form `(when FORM . VALUE)', FORM is |
/* If PROP is a list of the form `(when FORM . VALUE)', FORM is |
2832 |
evaluated. If the result is nil, VALUE is ignored. */ |
evaluated. If the result is nil, VALUE is ignored. */ |
2833 |
form = Qt; |
form = Qt; |
2834 |
if (CONSP (prop) && EQ (XCAR (prop), Qwhen)) |
if (CONSP (prop) && EQ (XCAR (prop), Qwhen)) |
2835 |
{ |
{ |
2960 |
else if (!it->string_from_display_prop_p) |
else if (!it->string_from_display_prop_p) |
2961 |
{ |
{ |
2962 |
/* `((margin left-margin) VALUE)' or `((margin right-margin) |
/* `((margin left-margin) VALUE)' or `((margin right-margin) |
2963 |
VALUE) or `((margin nil) VALUE)' or VALUE. */ |
VALUE) or `((margin nil) VALUE)' or VALUE. */ |
2964 |
Lisp_Object location, value; |
Lisp_Object location, value; |
2965 |
struct text_pos start_pos; |
struct text_pos start_pos; |
2966 |
int valid_p; |
int valid_p; |
6221 |
that the current message becomes the last displayed one, make |
that the current message becomes the last displayed one, make |
6222 |
choose a suitable buffer for echo_area_buffer[0], and clear it. |
choose a suitable buffer for echo_area_buffer[0], and clear it. |
6223 |
|
|
6224 |
Value is what FN returns. */ |
Value is what FN returns. */ |
6225 |
|
|
6226 |
static int |
static int |
6227 |
with_echo_area_buffer (w, which, fn, a1, a2, a3, a4) |
with_echo_area_buffer (w, which, fn, a1, a2, a3, a4) |
6572 |
/* Resize mini-window W to fit the size of its contents. EXACT:P |
/* Resize mini-window W to fit the size of its contents. EXACT:P |
6573 |
means size the window exactly to the size needed. Otherwise, it's |
means size the window exactly to the size needed. Otherwise, it's |
6574 |
only enlarged until W's buffer is empty. Value is non-zero if |
only enlarged until W's buffer is empty. Value is non-zero if |
6575 |
the window height has been changed. */ |
the window height has been changed. */ |
6576 |
|
|
6577 |
int |
int |
6578 |
resize_mini_window (w, exact_p) |
resize_mini_window (w, exact_p) |
6624 |
else |
else |
6625 |
max_height = total_height / 4; |
max_height = total_height / 4; |
6626 |
|
|
6627 |
/* Correct that max. height if it's bogus. */ |
/* Correct that max. height if it's bogus. */ |
6628 |
max_height = max (1, max_height); |
max_height = max (1, max_height); |
6629 |
max_height = min (total_height, max_height); |
max_height = min (total_height, max_height); |
6630 |
|
|
9163 |
{ |
{ |
9164 |
/* Force a thorough redisplay the next time by setting |
/* Force a thorough redisplay the next time by setting |
9165 |
last_arrow_position and last_arrow_string to t, which is |
last_arrow_position and last_arrow_string to t, which is |
9166 |
unequal to any useful value of Voverlay_arrow_... */ |
unequal to any useful value of Voverlay_arrow_... */ |
9167 |
last_arrow_position = Qt; |
last_arrow_position = Qt; |
9168 |
last_arrow_string = Qt; |
last_arrow_string = Qt; |
9169 |
} |
} |
12939 |
hpos_before = it->hpos; |
hpos_before = it->hpos; |
12940 |
x_before = x; |
x_before = x; |
12941 |
|
|
12942 |
if (/* Not a newline. */ |
if (/* Not a newline. */ |
12943 |
nglyphs > 0 |
nglyphs > 0 |
12944 |
/* Glyphs produced fit entirely in the line. */ |
/* Glyphs produced fit entirely in the line. */ |
12945 |
&& it->current_x < it->last_visible_x) |
&& it->current_x < it->last_visible_x) |