summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2011-07-07 16:11:54 +0900
committerKenichi Handa <handa@m17n.org>2011-07-07 16:11:54 +0900
commit15fa4783a39e7a8d99cc6b5e783307c08b25a823 (patch)
tree051925a8b92aacbc5cda237901db7db3f7adb25f /src
parent38fe4016d4ff317499eaf66b242e19db3da4a23f (diff)
downloademacs-15fa4783a39e7a8d99cc6b5e783307c08b25a823.tar.gz
Ignore a static composition that starts before the current checking position in redisplay.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog7
-rw-r--r--src/composite.c1
-rw-r--r--src/xdisp.c5
3 files changed, 13 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 46fef8b9285..7193374972b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2011-07-07 Kenichi Handa <handa@m17n.org>
+
+ * composite.c (composition_compute_stop_pos): Ignore a static
+ composition starting before CHARPOS (Bug#8915).
+
+ * xdisp.c (handle_composition_prop): Likewise.
+
2011-06-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* dispnew.c (scrolling_window): Before scrolling, turn off a
diff --git a/src/composite.c b/src/composite.c
index ec2595813aa..0ad0af90d07 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -1042,6 +1042,7 @@ composition_compute_stop_pos (cmp_it, charpos, bytepos, endpos, string)
cmp_it->id = -1;
cmp_it->ch = -2;
if (find_composition (charpos, endpos, &start, &end, &prop, string)
+ && start >= charpos
&& COMPOSITION_VALID_P (start, end, prop))
{
cmp_it->stop_pos = endpos = start;
diff --git a/src/xdisp.c b/src/xdisp.c
index 1f42e427428..b8a8ea7484d 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4641,6 +4641,11 @@ handle_composition_prop (it)
&& COMPOSITION_VALID_P (start, end, prop)
&& (STRINGP (it->string) || (PT <= start || PT >= end)))
{
+ if (start < pos)
+ /* As we can't handle this situation (perhaps, font-lock added
+ a new composition), we just return here hoping that next
+ redisplay will detect this composition much earlier. */
+ return HANDLED_NORMALLY;
if (start != pos)
{
if (STRINGP (it->string))