From: Kenichi Handa Date: Fri, 29 Aug 2008 08:01:43 +0000 (+0000) Subject: (unicode-category-table): Setup unicode-category-table. X-Git-Tag: emacs-pretest-23.0.90~3158 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=59db3a5ca46094d8f5d3aa196203411fec9ef259;p=emacs.git (unicode-category-table): Setup unicode-category-table. --- diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 6e8cddefe57..5543650ff7c 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -1115,6 +1115,26 @@ Setup char-width-table appropriate for non-CJK language environment." (set-char-table-range char-script-table range 'tibetan)) 'tibetan) + +;;; 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)) + ;;; Setting word boundary.