diff options
author | Paul Eggert <[email protected]> | 2011-09-03 16:03:38 -0700 |
---|---|---|
committer | Paul Eggert <[email protected]> | 2011-09-03 16:03:38 -0700 |
commit | b49e353d9d01adbe60bc5d0b1658b4ef978b0b06 (patch) | |
tree | 9f2ffa6f7a6562abf661a4951012b488ad8b1ae7 /src/chartab.c | |
parent | 74b880cbc18bd0194c7b1fc44c4a983ee05adae2 (diff) | |
parent | bc3200871917d5c54c8c4299a06bf8f8ba2ea02d (diff) |
Merge from trunk.
Diffstat (limited to 'src/chartab.c')
-rw-r--r-- | src/chartab.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/chartab.c b/src/chartab.c index efe23eca83..1d4ac04312 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -589,8 +589,6 @@ DEFUN ("set-char-table-extra-slot", Fset_char_table_extra_slot, (Lisp_Object char_table, Lisp_Object n, Lisp_Object value) { CHECK_CHAR_TABLE (char_table); - if (EQ (XCHAR_TABLE (char_table)->purpose, Qchar_code_property_table)) - error ("Can't change extra-slot of char-code-property-table"); CHECK_NUMBER (n); if (XINT (n) < 0 || XINT (n) >= CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (char_table))) @@ -1095,22 +1093,31 @@ map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object), /* Unicode character property tables. - This section provides a convenient and efficient way to get a - Unicode character property from C code (from Lisp, you must use - get-char-code-property). + This section provides a convenient and efficient way to get Unicode + character properties of characters from C code (from Lisp, you must + use get-char-code-property). - The typical usage is to get a char-table for a specific property at - a proper initialization time as this: + The typical usage is to get a char-table object for a specific + property like this (use of the "bidi-class" property below is just + an example): Lisp_Object bidi_class_table = uniprop_table (intern ("bidi-class")); - and get a property value for character CH as this: + (uniprop_table can return nil if it fails to find data for the + named property, or if it fails to load the appropriate Lisp support + file, so the return value should be tested to be non-nil, before it + is used.) - Lisp_Object bidi_class = CHAR_TABLE_REF (CH, bidi_class_table); + To get a property value for character CH use CHAR_TABLE_REF: + + Lisp_Object bidi_class = CHAR_TABLE_REF (bidi_class_table, CH); In this case, what you actually get is an index number to the vector of property values (symbols nil, L, R, etc). + The full list of Unicode character properties supported by Emacs is + documented in the ELisp manual, in the node "Character Properties". + A table for Unicode character property has these characteristics: o The purpose is `char-code-property-table', which implies that the @@ -1122,7 +1129,7 @@ map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object), means that we don't have to decode values. o The third extra slot is a Lisp function, an index (integer) to - the array uniprop_enncoder[], or nil. If it is a Lisp function, we + the array uniprop_encoder[], or nil. If it is a Lisp function, we can't use such a table from C (at the moment). If it is nil, it means that we don't have to encode values. */ @@ -1310,7 +1317,7 @@ uniprop_get_encoder (Lisp_Object table) function may load a Lisp file and thus may cause garbage-collection. */ -static Lisp_Object +Lisp_Object uniprop_table (Lisp_Object prop) { Lisp_Object val, table, result; |