# HG changeset patch # User Kenichi Handa # Date 962696218 0 # Node ID 6a52904a743be8a9f47e2b8f0c57c8d5c74553e2 # Parent 098362c400202c7e33d766fd07226f22f91e0852 (make_composition_value_copy): New function. diff -r 098362c40020 -r 6a52904a743b src/composite.c --- a/src/composite.c Tue Jul 04 04:50:20 2000 +0000 +++ b/src/composite.c Tue Jul 04 07:36:58 2000 +0000 @@ -534,6 +534,31 @@ } } + +/* 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.