From c1361885c561f3e1178ff83160dbdd23b3cfb9d4 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 4 Jul 2000 07:36:58 +0000 Subject: [PATCH] (make_composition_value_copy): New function. --- src/composite.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/composite.c b/src/composite.c index 085458db521..7da4c579ea7 100644 --- a/src/composite.c +++ b/src/composite.c @@ -534,6 +534,31 @@ update_compositions (from, to, check_mask) } } + +/* Modify composition property values in LIST destructively. LIST is + a list as returned from text_property_list. Change values to the + top-level copies of them so that none of them are `eq'. */ + +void +make_composition_value_copy (list) + Lisp_Object list; +{ + Lisp_Object plist, val; + + for (; CONSP (list); list = XCDR (list)) + { + plist = XCAR (XCDR (XCDR (XCAR (list)))); + while (CONSP (plist) && CONSP (XCDR (plist))) + { + if (EQ (XCAR (plist), Qcomposition) + && (val = XCAR (XCDR (plist)), CONSP (val))) + XCAR (XCDR (plist)) = Fcons (XCAR (val), XCDR (val)); + plist = XCDR (XCDR (plist)); + } + } +} + + /* Make text in the region between START and END a composition that has COMPONENTS and MODIFICATION-FUNC. -- 2.39.2