diff options
author | Kenichi Handa <handa@m17n.org> | 2011-07-07 07:43:48 +0900 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2011-07-07 07:43:48 +0900 |
commit | c805dec0b5fa81b5c9f2b724e2ec12a17d723aca (patch) | |
tree | c29a8490c976fdf4dbf64ef1b13a57f7d1110cc1 /lisp | |
parent | 5c62d133468c354b47a1643092add8292e084765 (diff) | |
download | emacs-c805dec0b5fa81b5c9f2b724e2ec12a17d723aca.tar.gz |
Add C interface for Unicode character property table.
Diffstat (limited to 'lisp')
19 files changed, 59 insertions, 59 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 89b33dc7a62..b85a1680286 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,39 @@ +2011-07-06 Kenichi Handa <handa@m17n.org> + + * international/characters.el (build-unicode-category-table): + Delete it. + (unicode-category-table): Set it by + unicode-prroperty-table-internal. + + * international/mule-cmds.el (char-code-property-alist): Moved to + to src/chartab.c. + (get-char-code-property): Call unicode-property-table-internal to + load a file. Call get-unicode-property-internal where necessary. + (put-char-code-property): Call unicode-property-table-internal to + load a file. Call put-unicode-property-internal where necessary. + put-unicode-property-internal where necessary. + (char-code-property-description): Call + unicode-property-table-internal to load a file. + + * international/charprop.el: + * international/uni-bidi.el: + * international/uni-category.el: + * international/uni-combining.el: + * international/uni-comment.el: + * international/uni-decimal.el: + * international/uni-decomposition.el: + * international/uni-digit.el: + * international/uni-lowercase.el: + * international/uni-mirrored.el: + * international/uni-name.el: + * international/uni-numeric.el: + * international/uni-old-name.el: + * international/uni-titlecase.el: + * international/uni-uppercase.el: Regenerate. + + * loadup.el: Load international/charprop.el before + international/characters. + 2011-06-22 Richard Stallman <rms@gnu.org> * mail/sendmail.el (mail-bury): If Rmail is in use, return nicely diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 455cbe697d6..a9657c17b9f 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -1206,22 +1206,8 @@ Setup char-width-table appropriate for non-CJK language environment." ;;; Setting unicode-category-table. -;; This macro is to build unicode-category-table at compile time so -;; that C code can access the table efficiently. -(defmacro build-unicode-category-table () - (let ((table (make-char-table 'unicode-category-table nil))) - (dotimes (i #x110000) - (if (or (< i #xD800) - (and (>= i #xF900) (< i #x30000)) - (and (>= i #xE0000) (< i #xE0200))) - (aset table i (get-char-code-property i 'general-category)))) - (set-char-table-range table '(#xE000 . #xF8FF) 'Co) - (set-char-table-range table '(#xF0000 . #xFFFFD) 'Co) - (set-char-table-range table '(#x100000 . #x10FFFD) 'Co) - (optimize-char-table table 'eq) - table)) - -(setq unicode-category-table (build-unicode-category-table)) +(setq unicode-category-table + (unicode-property-table-internal 'general-category)) (map-char-table #'(lambda (key val) (if (and val (or (and (/= (aref (symbol-name val) 0) ?M) diff --git a/lisp/international/charprop.el b/lisp/international/charprop.el index 5c3efcc9d07..919666010b1 100644 --- a/lisp/international/charprop.el +++ b/lisp/international/charprop.el @@ -1,8 +1,4 @@ -;; Copyright (C) 1991-2010 Unicode, Inc. -;; This file was generated from the Unicode data file at -;; http://www.unicode.org/Public/UNIDATA/UnicodeData.txt. -;; See lisp/international/README for the copyright and permission notice. - +;; Automatically generated by unidata-gen.el. ;; FILE: uni-name.el (define-char-code-property 'name "uni-name.el" "Unicode character name. @@ -45,7 +41,7 @@ Property value is an integer or a floating point.") ;; FILE: uni-mirrored.el (define-char-code-property 'mirrored "uni-mirrored.el" "Unicode bidi mirrored flag. -Property value is a symbol `Y' or `N'.") +Property value is a symbol `Y' or `N'. See also the property `mirroring'.") ;; FILE: uni-old-name.el (define-char-code-property 'old-name "uni-old-name.el" "Unicode old names as published in Unicode 1.0. @@ -66,6 +62,11 @@ Property value is a character.") (define-char-code-property 'titlecase "uni-titlecase.el" "Unicode simple titlecase mapping. Property value is a character.") +;; FILE: uni-mirrored.el +(define-char-code-property 'mirroring "uni-mirrored.el" + "Unicode bidi-mirroring characters. +Property value is a character that has the corresponding mirroring image, +or nil for non-mirrored character.") ;; Local Variables: ;; coding: utf-8 ;; no-byte-compile: t diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index b3f17bb3fcf..e75a22d6415 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2709,16 +2709,6 @@ See also `locale-charset-language-names', `locale-language-names', ;;; Character property -;; Each element has the form (PROP . TABLE). -;; PROP is a symbol representing a character property. -;; TABLE is a char-table containing the property value for each character. -;; TABLE may be a name of file to load to build a char-table. -;; Don't modify this variable directly but use `define-char-code-property'. - -(defvar char-code-property-alist nil - "Alist of character property name vs char-table containing property values. -Internal use only.") - (put 'char-code-property-table 'char-table-extra-slots 5) (defun define-char-code-property (name table &optional docstring) @@ -2770,32 +2760,23 @@ See also the documentation of `get-char-code-property' and (defun get-char-code-property (char propname) "Return the value of CHAR's PROPNAME property." - (let ((slot (assq propname char-code-property-alist))) - (if slot - (let (table value func) - (if (stringp (cdr slot)) - (load (cdr slot) nil t)) - (setq table (cdr slot) - value (aref table char) - func (char-table-extra-slot table 1)) + (let ((table (unicode-property-table-internal propname))) + (if table + (let ((func (char-table-extra-slot table 1))) (if (functionp func) - (setq value (funcall func char value table))) - value) + (funcall func char (aref table char) table) + (get-unicode-property-internal table char))) (plist-get (aref char-code-property-table char) propname)))) (defun put-char-code-property (char propname value) "Store CHAR's PROPNAME property with VALUE. It can be retrieved with `(get-char-code-property CHAR PROPNAME)'." - (let ((slot (assq propname char-code-property-alist))) - (if slot - (let (table func) - (if (stringp (cdr slot)) - (load (cdr slot) nil t)) - (setq table (cdr slot) - func (char-table-extra-slot table 2)) + (let ((table (unicode-property-table-internal propname))) + (if table + (let ((func (char-table-extra-slot table 2))) (if (functionp func) (funcall func char value table) - (aset table char value))) + (put-unicode-property-internal table char value))) (let* ((plist (aref char-code-property-table char)) (x (plist-put plist propname value))) (or (eq x plist) @@ -2805,13 +2786,9 @@ It can be retrieved with `(get-char-code-property CHAR PROPNAME)'." (defun char-code-property-description (prop value) "Return a description string of character property PROP's value VALUE. If there's no description string for VALUE, return nil." - (let ((slot (assq prop char-code-property-alist))) - (if slot - (let (table func) - (if (stringp (cdr slot)) - (load (cdr slot) nil t)) - (setq table (cdr slot) - func (char-table-extra-slot table 3)) + (let ((table (unicode-property-table-internal prop))) + (if table + (let ((func (char-table-extra-slot table 3))) (if (functionp func) (funcall func value)))))) diff --git a/lisp/international/uni-bidi.el b/lisp/international/uni-bidi.el Binary files differindex 9e571ef9d0d..e7682c6d8ff 100644 --- a/lisp/international/uni-bidi.el +++ b/lisp/international/uni-bidi.el diff --git a/lisp/international/uni-category.el b/lisp/international/uni-category.el Binary files differindex 80538f7b416..a4455decc52 100644 --- a/lisp/international/uni-category.el +++ b/lisp/international/uni-category.el diff --git a/lisp/international/uni-combining.el b/lisp/international/uni-combining.el Binary files differindex 2ee74d8b818..227b9d0af79 100644 --- a/lisp/international/uni-combining.el +++ b/lisp/international/uni-combining.el diff --git a/lisp/international/uni-comment.el b/lisp/international/uni-comment.el Binary files differindex dcc717977c7..c9743064bd4 100644 --- a/lisp/international/uni-comment.el +++ b/lisp/international/uni-comment.el diff --git a/lisp/international/uni-decimal.el b/lisp/international/uni-decimal.el Binary files differindex 22207a224b0..2c424ffb5de 100644 --- a/lisp/international/uni-decimal.el +++ b/lisp/international/uni-decimal.el diff --git a/lisp/international/uni-decomposition.el b/lisp/international/uni-decomposition.el Binary files differindex f35bcebfed8..b0bf07bbe85 100644 --- a/lisp/international/uni-decomposition.el +++ b/lisp/international/uni-decomposition.el diff --git a/lisp/international/uni-digit.el b/lisp/international/uni-digit.el Binary files differindex 692dea1edc8..fc52fd8c28c 100644 --- a/lisp/international/uni-digit.el +++ b/lisp/international/uni-digit.el diff --git a/lisp/international/uni-lowercase.el b/lisp/international/uni-lowercase.el Binary files differindex 7cc601159f0..41890018204 100644 --- a/lisp/international/uni-lowercase.el +++ b/lisp/international/uni-lowercase.el diff --git a/lisp/international/uni-mirrored.el b/lisp/international/uni-mirrored.el Binary files differindex 5129a93396d..006cf575591 100644 --- a/lisp/international/uni-mirrored.el +++ b/lisp/international/uni-mirrored.el diff --git a/lisp/international/uni-name.el b/lisp/international/uni-name.el Binary files differindex 5b9e8323d21..7fac18b278d 100644 --- a/lisp/international/uni-name.el +++ b/lisp/international/uni-name.el diff --git a/lisp/international/uni-numeric.el b/lisp/international/uni-numeric.el Binary files differindex 278ad683fe4..d16e8c00870 100644 --- a/lisp/international/uni-numeric.el +++ b/lisp/international/uni-numeric.el diff --git a/lisp/international/uni-old-name.el b/lisp/international/uni-old-name.el Binary files differindex 2e283492408..4e704e5cdd0 100644 --- a/lisp/international/uni-old-name.el +++ b/lisp/international/uni-old-name.el diff --git a/lisp/international/uni-titlecase.el b/lisp/international/uni-titlecase.el Binary files differindex 729a469d103..b8098c81876 100644 --- a/lisp/international/uni-titlecase.el +++ b/lisp/international/uni-titlecase.el diff --git a/lisp/international/uni-uppercase.el b/lisp/international/uni-uppercase.el Binary files differindex 0714b14794f..899276eb725 100644 --- a/lisp/international/uni-uppercase.el +++ b/lisp/international/uni-uppercase.el diff --git a/lisp/loadup.el b/lisp/loadup.el index 4c677523689..792827dd913 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -123,11 +123,11 @@ ;; multilingual text. (load "international/mule-cmds") (load "case-table") -(load "international/characters") -(load "composite") ;; This file doesn't exist when building a development version of Emacs ;; from the repository. It is generated just after temacs is built. (load "international/charprop.el" t) +(load "international/characters") +(load "composite") ;; Load language-specific files. (load "language/chinese") |