X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c6fac61f1cb5fcc8e6b76f07126fe7f8f1cf6a67..2afd5e90eb946a0e70547e56a4c705d7d0d4cb7f:/src/composite.c diff --git a/src/composite.c b/src/composite.c index 9fc58bc27b..7bd50a2339 100644 --- a/src/composite.c +++ b/src/composite.c @@ -92,32 +92,32 @@ Boston, MA 02111-1307, USA. */ The former is a hash table in which keys are COMPONENTS-VECs and values are the corresponding COMPOSITION-IDs. This hash table is - weak, but as each key (COMPONENTS-VEC) is also kept as a value of + weak, but as each key (COMPONENTS-VEC) is also kept as a value of the `composition' property, it won't be collected as garbage until all - text that have the same COMPONENTS-VEC are deleted. + bits of text that have the same COMPONENTS-VEC are deleted. The latter is a table of pointers to `struct composition' indexed - by COMPOSITION-ID. This structure keep the other information (see + by COMPOSITION-ID. This structure keeps the other information (see composite.h). In general, a text property holds information about individual characters. But, a `composition' property holds information about - a sequence of characters (in this sense, it is like `intangible' + a sequence of characters (in this sense, it is like the `intangible' property). That means that we should not share the property value - in adjacent compositions we can't distinguish them if they have the + in adjacent compositions -- we can't distinguish them if they have the same property. So, after any changes, we call `update_compositions' and change a property of one of adjacent compositions to a copy of it. This function also runs a proper composition modification function to make a composition that gets invalid by the change valid again. - As a value of `composition' property holds information about a + As the value of the `composition' property holds information about a specific range of text, the value gets invalid if we change the - text in the range. We treat `composition' property always + text in the range. We treat the `composition' property as always rear-nonsticky (currently by setting default-text-properties to (rear-nonsticky (composition))) and we never make properties of adjacent compositions identical. Thus, any such changes make the - range just shorter. So, we can check the validity of `composition' + range just shorter. So, we can check the validity of the `composition' property by comparing LENGTH information with the actual length of the composition. @@ -462,7 +462,7 @@ run_composition_function (from, to, prop) && find_composition (to, -1, &start, &end, &prop, Qnil) && !COMPOSITION_VALID_P (start, end, prop)) to = end; - if (!NILP (func)) + if (!NILP (Ffboundp (func))) call2 (func, make_number (from), make_number (to)); else if (!NILP (Ffboundp (Vcompose_chars_after_function))) call3 (Vcompose_chars_after_function, @@ -478,7 +478,7 @@ run_composition_function (from, to, prop) void update_compositions (from, to, check_mask) - int from, to; + int from, to, check_mask; { Lisp_Object prop; int start, end; @@ -715,7 +715,7 @@ DEFUN ("compose-region-internal", Fcompose_region_internal, Compose text in the region between START and END. Optional 3rd and 4th arguments are COMPONENTS and MODIFICATION-FUNC -for the composition. See `compose-region' for more detail. */) +for the composition. See `compose-region' for more detail. */) (start, end, components, mod_func) Lisp_Object start, end, components, mod_func; { @@ -736,7 +736,7 @@ DEFUN ("compose-string-internal", Fcompose_string_internal, Compose text between indices START and END of STRING. Optional 4th and 5th arguments are COMPONENTS and MODIFICATION-FUNC -for the composition. See `compose-string' for more detail. */) +for the composition. See `compose-string' for more detail. */) (string, start, end, components, mod_func) Lisp_Object string, start, end, components, mod_func; { @@ -843,7 +843,7 @@ syms_of_composite () args[0] = QCtest; args[1] = Qequal; args[2] = QCweakness; - args[3] = Qnil; + args[3] = Qt; args[4] = QCsize; args[5] = make_number (311); composition_hash_table = Fmake_hash_table (6, args);