changeset 91190:cdc63ae7ea34

(handle_auto_composed_prop): Fix previous change.
author Kenichi Handa <handa@m17n.org>
date Thu, 06 Dec 2007 07:24:26 +0000
parents ffc66d7b1d98
children 5bce041b93dc
files src/xdisp.c
diffstat 1 files changed, 11 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Dec 05 12:03:13 2007 +0000
+++ b/src/xdisp.c	Thu Dec 06 07:24:26 2007 +0000
@@ -4553,7 +4553,7 @@
 
   if (FUNCTIONP (Vauto_composition_function))
     {
-      Lisp_Object val;
+      Lisp_Object val = Qnil;
       EMACS_INT pos, pos_byte, this_pos, start, end;
       int c;
 
@@ -4596,7 +4596,8 @@
 	      if (! EQ (font_object,
 			font_at (c, pos, FACE_FROM_ID (it->f, it->face_id),
 				 it->w, it->string)))
-		/* We must re-compute the composition.  */
+		/* We must re-compute the composition for the
+		   different font.  */
 		val = Qnil;
 	    }
 #endif
@@ -4618,22 +4619,16 @@
 		     auto-composed region.  There's a possiblity that
 		     the last characters in the region may be newly
 		     composed.  */
-		  int charpos = end - 1, bytepos, c;
-
-		  if (STRINGP (it->string))
+		  if (pos < end - 1)
 		    {
-		      bytepos = string_char_to_byte (it->string, charpos);
-		      c = SDATA (it->string)[bytepos];
+		      if (get_property_and_range (end - 1, Qcomposition,
+						  &cmp_prop, &cmp_start,
+						  &cmp_end, it->string))
+			pos = cmp_start;
+		      else
+			pos = end - 1;
 		    }
-		  else
-		    {
-		      bytepos = CHAR_TO_BYTE (charpos);
-		      c = FETCH_BYTE (bytepos);
-		    }
-		  if (c != '\n')
-		    /* If the last character is not newline, it may be
-		       composed with the following characters.  */
-		    val = Qnil, pos = charpos + 1;
+		  val = Qnil;
 		}
 	    }
 	}