aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiles Bader2006-02-04 01:01:38 +0000
committerMiles Bader2006-02-04 01:01:38 +0000
commit307f5c57467e8e967f795d47ec885bf19fd5317f (patch)
tree937b5ce4db7094b06d5c1cf58413ca49b860e5db /src
parent50d4fbde0cd35834e2fc9f0adc4c189657ba7170 (diff)
parent6203370b5e51fe55a4132fe8ccc868c35ad8c67f (diff)
downloademacs-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/ChangeLog16
-rw-r--r--src/coding.c4
-rw-r--r--src/xdisp.c29
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 @@
12006-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
122006-02-02 Kenichi Handa <handa@m17n.org>
13
14 * coding.c (decode_composition_emacs_mule): Fix handling of
15 incorrect format data.
16
12006-01-31 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 172006-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
5428static struct frame *last_escape_glyph_frame = NULL;
5429static unsigned last_escape_glyph_face_id = (1 << FACE_ID_BITS);
5430static int last_escape_glyph_merged_face_id = 0;
5431
5428int 5432int
5429get_next_display_element (it) 5433get_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. */