4651 |
{ |
{ |
4652 |
Lisp_Object prop; |
Lisp_Object prop; |
4653 |
|
|
4654 |
prop = Fget_char_property (make_number (IT_CHARPOS (*it)), |
/* Check the newline before point for invisibility. */ |
4655 |
|
prop = Fget_char_property (make_number (IT_CHARPOS (*it) - 1), |
4656 |
Qinvisible, it->window); |
Qinvisible, it->window); |
4657 |
if (TEXT_PROP_MEANS_INVISIBLE (prop)) |
if (TEXT_PROP_MEANS_INVISIBLE (prop)) |
4658 |
visible_p = 0; |
visible_p = 0; |
4985 |
If it->multibyte_p is zero, eight-bit characters that |
If it->multibyte_p is zero, eight-bit characters that |
4986 |
don't have corresponding multibyte char code are also |
don't have corresponding multibyte char code are also |
4987 |
translated to octal form. */ |
translated to octal form. */ |
4988 |
else if ((it->c < ' ' ? (it->area != TEXT_AREA |
else if ((it->c < ' ' |
4989 |
|| (it->c != '\n' && it->c != '\t')) |
? (it->area != TEXT_AREA |
4990 |
|
/* In mode line, treat \n, \t like other crl chars. */ |
4991 |
|
|| (it->glyph_row && it->glyph_row->mode_line_p) |
4992 |
|
|| (it->c != '\n' && it->c != '\t')) |
4993 |
: it->multibyte_p ? !CHAR_PRINTABLE_P (it->c) |
: it->multibyte_p ? !CHAR_PRINTABLE_P (it->c) |
4994 |
: (it->c >= 127 |
: (it->c >= 127 |
4995 |
&& (! unibyte_display_via_language_environment |
&& (! unibyte_display_via_language_environment |
8529 |
{ |
{ |
8530 |
struct buffer *prev = current_buffer; |
struct buffer *prev = current_buffer; |
8531 |
int count = SPECPDL_INDEX (); |
int count = SPECPDL_INDEX (); |
8532 |
Lisp_Object old_tool_bar; |
Lisp_Object new_tool_bar; |
8533 |
|
int new_n_tool_bar; |
8534 |
struct gcpro gcpro1; |
struct gcpro gcpro1; |
8535 |
|
|
8536 |
/* Set current_buffer to the buffer of the selected |
/* Set current_buffer to the buffer of the selected |
8549 |
specbind (Qoverriding_local_map, Qnil); |
specbind (Qoverriding_local_map, Qnil); |
8550 |
} |
} |
8551 |
|
|
8552 |
old_tool_bar = f->tool_bar_items; |
GCPRO1 (new_tool_bar); |
|
GCPRO1 (old_tool_bar); |
|
8553 |
|
|
8554 |
/* Build desired tool-bar items from keymaps. */ |
/* Build desired tool-bar items from keymaps. */ |
8555 |
BLOCK_INPUT; |
new_tool_bar = tool_bar_items (Fcopy_sequence (f->tool_bar_items), |
8556 |
f->tool_bar_items |
&new_n_tool_bar); |
|
= tool_bar_items (f->tool_bar_items, &f->n_tool_bar_items); |
|
|
UNBLOCK_INPUT; |
|
8557 |
|
|
8558 |
/* Redisplay the tool-bar if we changed it. */ |
/* Redisplay the tool-bar if we changed it. */ |
8559 |
if (! NILP (Fequal (old_tool_bar, f->tool_bar_items))) |
if (NILP (Fequal (new_tool_bar, f->tool_bar_items))) |
8560 |
w->update_mode_line = Qt; |
{ |
8561 |
|
/* Redisplay that happens asynchronously due to an expose event |
8562 |
|
may access f->tool_bar_items. Make sure we update both |
8563 |
|
variables within BLOCK_INPUT so no such event interrupts. */ |
8564 |
|
BLOCK_INPUT; |
8565 |
|
f->tool_bar_items = new_tool_bar; |
8566 |
|
f->n_tool_bar_items = new_n_tool_bar; |
8567 |
|
w->update_mode_line = Qt; |
8568 |
|
UNBLOCK_INPUT; |
8569 |
|
} |
8570 |
|
|
8571 |
UNGCPRO; |
UNGCPRO; |
8572 |
|
|