changeset 91272:ed2b4d6be27c

(handle_auto_composed_prop): Change the argument to auto-composition-function.
author Kenichi Handa <handa@m17n.org>
date Tue, 25 Dec 2007 10:33:11 +0000
parents fed5211f4809
children f19e3a3100e2
files src/xdisp.c
diffstat 1 files changed, 21 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Tue Dec 25 10:32:26 2007 +0000
+++ b/src/xdisp.c	Tue Dec 25 10:33:11 2007 +0000
@@ -4554,7 +4554,7 @@
   if (FUNCTIONP (Vauto_composition_function))
     {
       Lisp_Object val = Qnil;
-      EMACS_INT pos;
+      EMACS_INT pos, limit = -1;
 
       if (STRINGP (it->string))
 	pos = IT_STRING_CHARPOS (*it);
@@ -4588,7 +4588,6 @@
 	  if (! NILP (val))
 	    {
 	      Lisp_Object end;
-	      EMACS_INT limit;
 
 	      /* As Fnext_single_char_property_change is very slow, we
 		 limit the search to the current line.  */
@@ -4612,21 +4611,28 @@
 	}
       if (NILP (val))
 	{
-	  int count = SPECPDL_INDEX ();
-	  Lisp_Object args[4];
-
-	  args[0] = Vauto_composition_function;
-	  specbind (Qauto_composition_function, Qnil);
-	  args[1] = make_number (pos);
-	  args[2] = it->string;
+	  if (limit < 0)
+	    limit = (STRINGP (it->string) ? SCHARS (it->string)
+		     : find_next_newline_no_quit (pos, 1));
+	  if (pos < limit)
+	    {
+	      int count = SPECPDL_INDEX ();
+	      Lisp_Object args[5];
+
+	      args[0] = Vauto_composition_function;
+	      specbind (Qauto_composition_function, Qnil);
+	      args[1] = make_number (pos);
+	      args[2] = make_number (limit);
 #ifdef USE_FONT_BACKEND
-	  if (enable_font_backend)
-	    args[3] = it->window;
-	  else
+	      if (enable_font_backend)
+		args[3] = it->window;
+	      else
 #endif	/* USE_FONT_BACKEND */
-	    args[3] = Qnil;
-	  safe_call (4, args);
-	  unbind_to (count, Qnil);
+		args[3] = Qnil;
+	      args[4] = it->string;
+	      safe_call (5, args);
+	      unbind_to (count, Qnil);
+	    }
 	}
     }