Mercurial > emacs
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); + } } }