diff options
| author | Miles Bader | 2006-02-04 01:01:38 +0000 |
|---|---|---|
| committer | Miles Bader | 2006-02-04 01:01:38 +0000 |
| commit | 307f5c57467e8e967f795d47ec885bf19fd5317f (patch) | |
| tree | 937b5ce4db7094b06d5c1cf58413ca49b860e5db /src | |
| parent | 50d4fbde0cd35834e2fc9f0adc4c189657ba7170 (diff) | |
| parent | 6203370b5e51fe55a4132fe8ccc868c35ad8c67f (diff) | |
| download | emacs-307f5c57467e8e967f795d47ec885bf19fd5317f.tar.gz emacs-307f5c57467e8e967f795d47ec885bf19fd5317f.zip | |
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-11
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 34-42)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 14-17)
- Update from CVS
- Merge from emacs--devo--0
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 16 | ||||
| -rw-r--r-- | src/coding.c | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 29 |
3 files changed, 46 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index cce484a0e3a..dc6a1641ac5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,19 @@ | |||
| 1 | 2006-02-03 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * xdisp.c: Cache last merged escape glyph face. | ||
| 4 | (last_escape_glyph_frame, last_escape_glyph_face_id) | ||
| 5 | (last_escape_glyph_merged_face_id): New variables. | ||
| 6 | (get_next_display_element): Use/update them. | ||
| 7 | (redisplay_internal): Reset them before redisplay. | ||
| 8 | |||
| 9 | * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix. | ||
| 10 | Only recheck faces after displaying ellipsis. | ||
| 11 | |||
| 12 | 2006-02-02 Kenichi Handa <handa@m17n.org> | ||
| 13 | |||
| 14 | * coding.c (decode_composition_emacs_mule): Fix handling of | ||
| 15 | incorrect format data. | ||
| 16 | |||
| 1 | 2006-01-31 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 17 | 2006-01-31 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> |
| 2 | 18 | ||
| 3 | * gtkutil.c (update_frame_tool_bar): Use new tool bar functions | 19 | * gtkutil.c (update_frame_tool_bar): Use new tool bar functions |
diff --git a/src/coding.c b/src/coding.c index 6ec0804353f..f10a10e1e72 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -1039,7 +1039,7 @@ coding_alloc_by_making_gap (coding, bytes) | |||
| 1039 | make_gap (bytes); | 1039 | make_gap (bytes); |
| 1040 | GAP_SIZE += add; ZV -= add; Z -= add; ZV_BYTE -= add; Z_BYTE -= add; | 1040 | GAP_SIZE += add; ZV -= add; Z -= add; ZV_BYTE -= add; Z_BYTE -= add; |
| 1041 | } | 1041 | } |
| 1042 | else | 1042 | else if (c >= 0x80) |
| 1043 | { | 1043 | { |
| 1044 | Lisp_Object this_buffer; | 1044 | Lisp_Object this_buffer; |
| 1045 | 1045 | ||
| @@ -1308,6 +1308,8 @@ decode_coding_utf_8 (coding) | |||
| 1308 | *charbuf++ = ASCII_BYTE_P (c) ? c : BYTE8_TO_CHAR (c); | 1308 | *charbuf++ = ASCII_BYTE_P (c) ? c : BYTE8_TO_CHAR (c); |
| 1309 | coding->errors++; | 1309 | coding->errors++; |
| 1310 | } | 1310 | } |
| 1311 | else | ||
| 1312 | return 0; | ||
| 1311 | 1313 | ||
| 1312 | no_more_source: | 1314 | no_more_source: |
| 1313 | coding->consumed_char += consumed_chars_base; | 1315 | coding->consumed_char += consumed_chars_base; |
diff --git a/src/xdisp.c b/src/xdisp.c index 8b1b6f59cf2..fb071542925 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5425,6 +5425,10 @@ static int (* get_next_element[NUM_IT_METHODS]) P_ ((struct it *it)) = | |||
| 5425 | display element from the current position of IT. Value is zero if | 5425 | display element from the current position of IT. Value is zero if |
| 5426 | end of buffer (or C string) is reached. */ | 5426 | end of buffer (or C string) is reached. */ |
| 5427 | 5427 | ||
| 5428 | static struct frame *last_escape_glyph_frame = NULL; | ||
| 5429 | static unsigned last_escape_glyph_face_id = (1 << FACE_ID_BITS); | ||
| 5430 | static int last_escape_glyph_merged_face_id = 0; | ||
| 5431 | |||
| 5428 | int | 5432 | int |
| 5429 | get_next_display_element (it) | 5433 | get_next_display_element (it) |
| 5430 | struct it *it; | 5434 | struct it *it; |
| @@ -5536,11 +5540,19 @@ get_next_display_element (it) | |||
| 5536 | face_id = merge_faces (it->f, Qt, lface_id, | 5540 | face_id = merge_faces (it->f, Qt, lface_id, |
| 5537 | it->face_id); | 5541 | it->face_id); |
| 5538 | } | 5542 | } |
| 5543 | else if (it->f == last_escape_glyph_frame | ||
| 5544 | && it->face_id == last_escape_glyph_face_id) | ||
| 5545 | { | ||
| 5546 | face_id = last_escape_glyph_merged_face_id; | ||
| 5547 | } | ||
| 5539 | else | 5548 | else |
| 5540 | { | 5549 | { |
| 5541 | /* Merge the escape-glyph face into the current face. */ | 5550 | /* Merge the escape-glyph face into the current face. */ |
| 5542 | face_id = merge_faces (it->f, Qescape_glyph, 0, | 5551 | face_id = merge_faces (it->f, Qescape_glyph, 0, |
| 5543 | it->face_id); | 5552 | it->face_id); |
| 5553 | last_escape_glyph_frame = it->f; | ||
| 5554 | last_escape_glyph_face_id = it->face_id; | ||
| 5555 | last_escape_glyph_merged_face_id = face_id; | ||
| 5544 | } | 5556 | } |
| 5545 | 5557 | ||
| 5546 | XSETINT (it->ctl_chars[0], g); | 5558 | XSETINT (it->ctl_chars[0], g); |
| @@ -5586,11 +5598,19 @@ get_next_display_element (it) | |||
| 5586 | face_id = merge_faces (it->f, Qt, lface_id, | 5598 | face_id = merge_faces (it->f, Qt, lface_id, |
| 5587 | it->face_id); | 5599 | it->face_id); |
| 5588 | } | 5600 | } |
| 5601 | else if (it->f == last_escape_glyph_frame | ||
| 5602 | && it->face_id == last_escape_glyph_face_id) | ||
| 5603 | { | ||
| 5604 | face_id = last_escape_glyph_merged_face_id; | ||
| 5605 | } | ||
| 5589 | else | 5606 | else |
| 5590 | { | 5607 | { |
| 5591 | /* Merge the escape-glyph face into the current face. */ | 5608 | /* Merge the escape-glyph face into the current face. */ |
| 5592 | face_id = merge_faces (it->f, Qescape_glyph, 0, | 5609 | face_id = merge_faces (it->f, Qescape_glyph, 0, |
| 5593 | it->face_id); | 5610 | it->face_id); |
| 5611 | last_escape_glyph_frame = it->f; | ||
| 5612 | last_escape_glyph_face_id = it->face_id; | ||
| 5613 | last_escape_glyph_merged_face_id = face_id; | ||
| 5594 | } | 5614 | } |
| 5595 | 5615 | ||
| 5596 | /* Handle soft hyphens in the mode where they only get | 5616 | /* Handle soft hyphens in the mode where they only get |
| @@ -5788,6 +5808,8 @@ set_iterator_to_next (it, reseat_p) | |||
| 5788 | 5808 | ||
| 5789 | if (it->dpvec + it->current.dpvec_index == it->dpend) | 5809 | if (it->dpvec + it->current.dpvec_index == it->dpend) |
| 5790 | { | 5810 | { |
| 5811 | int recheck_faces = it->ellipsis_p; | ||
| 5812 | |||
| 5791 | if (it->s) | 5813 | if (it->s) |
| 5792 | it->method = GET_FROM_C_STRING; | 5814 | it->method = GET_FROM_C_STRING; |
| 5793 | else if (STRINGP (it->string)) | 5815 | else if (STRINGP (it->string)) |
| @@ -5810,8 +5832,9 @@ set_iterator_to_next (it, reseat_p) | |||
| 5810 | set_iterator_to_next (it, reseat_p); | 5832 | set_iterator_to_next (it, reseat_p); |
| 5811 | } | 5833 | } |
| 5812 | 5834 | ||
| 5813 | /* Recheck faces after display vector */ | 5835 | /* Maybe recheck faces after display vector */ |
| 5814 | it->stop_charpos = IT_CHARPOS (*it); | 5836 | if (recheck_faces) |
| 5837 | it->stop_charpos = IT_CHARPOS (*it); | ||
| 5815 | } | 5838 | } |
| 5816 | break; | 5839 | break; |
| 5817 | 5840 | ||
| @@ -10651,6 +10674,8 @@ redisplay_internal (preserve_echo_area) | |||
| 10651 | retry: | 10674 | retry: |
| 10652 | pause = 0; | 10675 | pause = 0; |
| 10653 | reconsider_clip_changes (w, current_buffer); | 10676 | reconsider_clip_changes (w, current_buffer); |
| 10677 | last_escape_glyph_frame = NULL; | ||
| 10678 | last_escape_glyph_face_id = (1 << FACE_ID_BITS); | ||
| 10654 | 10679 | ||
| 10655 | /* If new fonts have been loaded that make a glyph matrix adjustment | 10680 | /* If new fonts have been loaded that make a glyph matrix adjustment |
| 10656 | necessary, do it. */ | 10681 | necessary, do it. */ |