summaryrefslogtreecommitdiff
path: root/lisp/language/china-util.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2003-05-18 21:02:22 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2003-05-18 21:02:22 +0000
commit2254377e6767f12326b26213f1105cf0f806b514 (patch)
tree3a93d04076246b6904b2842d7e6974b80aa3f03c /lisp/language/china-util.el
parent462a7ed6142961baf770eac8141bbe43192cbd45 (diff)
downloademacs-2254377e6767f12326b26213f1105cf0f806b514.tar.gz
(hz-set-msb-table): Build when compiling.
(big5-to-cns): Pre-build the alist when compiling.
Diffstat (limited to 'lisp/language/china-util.el')
-rw-r--r--lisp/language/china-util.el77
1 files changed, 34 insertions, 43 deletions
diff --git a/lisp/language/china-util.el b/lisp/language/china-util.el
index 2be6ebcdff4..57590d8a665 100644
--- a/lisp/language/china-util.el
+++ b/lisp/language/china-util.el
@@ -1,6 +1,6 @@
;;; china-util.el --- utilities for Chinese -*- coding: iso-2022-7bit -*-
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+;; Copyright (C) 1995, 2003 Electrotechnical Laboratory, JAPAN.
;; Licensed to the Free Software Foundation.
;; Copyright (C) 1995, 2001 Free Software Foundation, Inc.
@@ -64,15 +64,16 @@
"Flag to tell if we should care line continuation convention of Hz.")
(defconst hz-set-msb-table
- (let ((str (make-string 127 0))
- (i 0))
- (while (< i 33)
- (aset str i i)
- (setq i (1+ i)))
- (while (< i 127)
- (aset str i (+ i 128))
- (setq i (1+ i)))
- str))
+ (eval-when-compile
+ (let ((chars nil)
+ (i 0))
+ (while (< i 33)
+ (push i chars)
+ (setq i (1+ i)))
+ (while (< i 127)
+ (push (+ i 128) chars)
+ (setq i (1+ i)))
+ (apply 'string (nreverse chars)))))
;;;###autoload
(defun decode-hz-region (beg end)
@@ -171,6 +172,7 @@ Return the length of resulting text."
;; Many kudos to Himi! The used code has been adapted from his
;; mule-ucs package.
+(eval-when-compile
(defun big5-to-flat-code (num)
"Convert NUM in Big 5 encoding to a `flat code'.
0xA140 will be mapped to position 0, 0xA141 to position 1, etc.
@@ -226,54 +228,43 @@ mapped will be represented with the byte 0xFF.
The return value is the filled translation table."
- (let (chartable
- elem
- result
+ (let ((chartable (make-char-table 'translation-table #xFF))
char
big5
i
end
codepoint
charset)
- (setq chartable (make-char-table 'translation-table #xFF))
- (while alist
- (setq elem (car alist)
- char (car elem)
- big5 (cdr elem)
- alist (cdr alist))
+ (dolist (elem alist)
+ (setq char (car elem)
+ big5 (cdr elem))
(cond ((and (consp char)
(consp big5))
- (setq i (big5-to-flat-code (car big5))
- end (big5-to-flat-code (cdr big5))
- codepoint (euc-to-flat-code (cdr char))
- charset (car char))
- (while (>= end i)
- (aset chartable
- (decode-big5-char (flat-code-to-big5 i))
- (apply (function make-char)
- charset
- (flat-code-to-euc codepoint)))
- (setq i (1+ i)
- codepoint (1+ codepoint)))
- )
+ (setq i (big5-to-flat-code (car big5))
+ end (big5-to-flat-code (cdr big5))
+ codepoint (euc-to-flat-code (cdr char))
+ charset (car char))
+ (while (>= end i)
+ (aset chartable
+ (decode-big5-char (flat-code-to-big5 i))
+ (apply (function make-char)
+ charset
+ (flat-code-to-euc codepoint)))
+ (setq i (1+ i)
+ codepoint (1+ codepoint))))
((and (char-valid-p char)
(numberp big5))
- (setq i (decode-big5-char big5))
- (aset chartable i char)
- )
+ (setq i (decode-big5-char big5))
+ (aset chartable i char))
(t
- (error "Unknown slot type: %S" elem)
- )
- )
- )
+ (error "Unknown slot type: %S" elem))))
;; the return value
- chartable
- )
-)
+ chartable)))
;; All non-CNS encodings are commented out.
(define-translation-table 'big5-to-cns
+ (eval-when-compile
(expand-euc-big5-alist
'(
;; Symbols
@@ -420,7 +411,7 @@ The return value is the filled translation table."
(?$(I=~(B . #xF9DB)
(?$(IK\(B . #xF9DC)
)
- )
+ ))
)
;;