]> code.delx.au - gnu-emacs/blobdiff - lisp/language/chinese.el
Provide XXX-util instead of
[gnu-emacs] / lisp / language / chinese.el
index 66d12219fbf53bd572460d94f212fa895e558ac5..869b8129ab08ada3c3be7e4ce1756125b6a117db 100644 (file)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (make-coding-system
- 'coding-system-iso-2022-cn 2 ?C
- "Coding system ISO-2022-CN for Chinese (GB and CNS character sets)."
+ 'chinese-iso-7bit 2 ?C
+ "ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN)"
  '(ascii
    (nil chinese-gb2312 chinese-cns11643-1)
    (nil chinese-cns11643-2)
    (nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
        chinese-cns11643-6 chinese-cns11643-7)
-   nil ascii-eol ascii-cntl seven locking-shift single-shift))
-
+   nil ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil
+   init-bol))
+
+(define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn)
+(define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn-ext)
+
+(define-prefix-command 'describe-chinese-environment-map)
+(define-key-after describe-language-environment-map [Chinese]
+  '("Chinese" . describe-chinese-environment-map)
+  t)
+
+(define-prefix-command 'setup-chinese-environment-map)
+(define-key-after setup-language-environment-map [Chinese]
+  '("Chinese" . setup-chinese-environment-map)
+  t)
+\f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Chinese GB2312 (simplified) 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (make-coding-system
- 'coding-system-euc-china 2 ?C
- "Coding-system of Chinese EUC (so called GB Encoding)."
+ 'chinese-iso-8bit 2 ?c
+ "ISO 2022 based EUC encoding for Chinese GB2312 (MIME:CN-GB-2312)"
  '((ascii t) chinese-gb2312 chinese-sisheng nil
    nil ascii-eol ascii-cntl nil nil single-shift nil))
 
+(define-coding-system-alias 'chinese-iso-8bit 'cn-gb-2312)
+(define-coding-system-alias 'chinese-iso-8bit 'euc-china)
+
 (make-coding-system
- 'coding-system-hz 0 ?z
- "Codins-system of Hz/ZW used for Chinese (GB)."
+ 'chinese-hz 0 ?z
+ "Hz/ZW 7-bit encoding for Chinese GB2312 (MIME:HZ-GB-2312)"
  nil)
-(put 'coding-system-hz 'post-read-conversion 'post-read-decode-hz)
-(put 'coding-system-hz 'pre-write-conversion 'pre-write-encode-hz)
+(put 'chinese-hz 'post-read-conversion 'post-read-decode-hz)
+(put 'chinese-hz 'pre-write-conversion 'pre-write-encode-hz)
+
+(define-coding-system-alias 'chinese-hz 'hz-gb-2312)
+(define-coding-system-alias 'chinese-hz 'hz)
 
 (defun post-read-decode-hz (len)
   (let ((pos (point)))
   (let ((buf (current-buffer))
        (work (get-buffer-create " *pre-write-encoding-work*")))
     (set-buffer work)
-    (widen)
     (erase-buffer)
-    (insert-buffer-substring buf from to)
+    (if (stringp from)
+       (insert from)
+      (insert-buffer-substring buf from to))
     (encode-hz-region 1 (point-max))
     nil))
 
-(register-input-method
- "Chinese-GB" '("quail-ccdospy" quail-use-package "quail/ccdospy"))
-(register-input-method
- "Chinese-GB" '("quail-ctlau" quail-use-package "quail/ctlau"))
-(register-input-method
- "Chinese-GB" '("quail-punct" quail-use-package "quail/punct"))
-(register-input-method
- "Chinese-GB" '("quail-qj" quail-use-package "quail/qj"))
-(register-input-method
- "Chinese-GB" '("quail-sw" quail-use-package "quail/sw"))
-(register-input-method
- "Chinese-GB" '("quail-ziranma" quail-use-package "quail/ziranma"))
-(register-input-method
- "Chinese-GB" '("quail-tonepy" quail-use-package "quail/tonepy"))
-(register-input-method
- "Chinese-GB" '("quail-py" quail-use-package "quail/py"))
-
-(defun setup-chinese-gb-environment ()
-  (setq primary-language "Chinese-GB")
-
-  (setq coding-category-iso-8-2 'coding-system-euc-china)
-  (setq coding-category-iso-else 'coding-system-iso-2022-cn)
-
-  (set-coding-priority
-   '(coding-category-iso-7
-     coding-category-iso-else
-     coding-category-iso-8-2
-     coding-category-big5
-     coding-category-iso-8-1
-     coding-category-internal
-     ))
-
-  (setq-default buffer-file-coding-system 'coding-system-euc-china)
-  (set-terminal-coding-system 'coding-system-euc-china)
-  (set-keyboard-coding-system 'coding-system-euc-china)
-
-  (setq default-input-method '("Chinese-GB" . "quail-py"))
-  )
-
 (set-language-info-alist
- "Chinese" '((documentation . 
-"Emacs provides three kinds of Chinese support: Chinese-GB,
-Chinese-BIG5, and Chinese-CNS.  Please specify one of them to get more
-information.")
-            (setup-function . setup-chinese-gb-environment)
-            (charset . (chinese-gb2312 chinese-sisheng))
-            (coding-system . (coding-system-euc-china
-                              coding-system-hz
-                              coding-system-iso-2022-cn))
-            (documentation . t)
-            (sample-text . "Chinese (\e$AVPND\e(B,\e$AFUM(;0\e(B,\e$A::So\e(B)       \e$ADc:C\e(B")))
+ "Chinese-GB" '((setup-function . (setup-chinese-gb-environment
+                                  . setup-chinese-environment-map))
+               (charset . (chinese-gb2312 chinese-sisheng))
+               (coding-system
+                . (chinese-iso-8bit chinese-iso-7bit chinese-hz))
+               (sample-text . "Chinese (\e$AVPND\e(B,\e$AFUM(;0\e(B,\e$A::So\e(B)    \e$ADc:C\e(B")
+               (documentation . ("Support for Chinese GB2312 character set."
+                                 . describe-chinese-environment-map))
+               ))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Chinese BIG5 (traditional)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (make-coding-system
- 'coding-system-big5 3 ?B
- "Coding-system of BIG5.")
+ 'chinese-big5 3 ?B "BIG5 8-bit encoding for Chinese (MIME:CN-BIG5)")
+
+(define-coding-system-alias 'chinese-big5 'big5)
+(define-coding-system-alias 'chinese-big5 'cn-big5)
 
 ;; Big5 font requires special encoding.
 (define-ccl-program ccl-encode-big5-font
@@ -152,86 +134,30 @@ information.")
 (setq font-ccl-encoder-alist
       (cons (cons "big5" ccl-encode-big5-font) font-ccl-encoder-alist))
 
-(register-input-method
- "Chinese-BIG5" '("quail-qj-b5" quail-use-package "quail/qj-b5"))
-(register-input-method
- "Chinese-BIG5" '("quail-zozy" quail-use-package "quail/zozy"))
-(register-input-method
- "Chinese-BIG5" '("quail-tsangchi-b5" quail-use-package "quail/tsangchi-b5"))
-(register-input-method
- "Chinese-BIG5" '("quail-py-b5" quail-use-package "quail/py-b5"))
-(register-input-method
- "Chinese-BIG5" '("quail-quick-b5" quail-use-package "quail/quick-bt"))
-(register-input-method
- "Chinese-BIG5" '("quail-etzy" quail-use-package "quail/etzy"))
-(register-input-method
- "Chinese-BIG5" '("quail-ecdict" quail-use-package "quail/ecdict"))
-(register-input-method
- "Chinese-BIG5" '("quail-ctlaub" quail-use-package "quail/ctlaub"))
-(register-input-method
- "Chinese-BIG5" '("quail-array30" quail-use-package "quail/array30"))
-(register-input-method
- "Chinese-BIG5" '("quail-4corner" quail-use-package "quail/4corner"))
-
-(defun setup-chinese-big5-environment ()
-  (setq primary-language "Chinese-BIG5")
-
-  (setq coding-category-big5 'coding-system-big5)
-  (setq coding-category-iso-else 'coding-system-iso-2022-cn)
-
-  (set-coding-priority
-   '(coding-category-iso-7
-     coding-category-iso-else
-     coding-category-big5))
-
-  (setq-default buffer-file-coding-system 'coding-system-big5)
-  (set-terminal-coding-system 'coding-system-big5)
-  (set-keyboard-coding-system 'coding-system-big5)
-
-  (setq default-input-method '("Chinese-BIG5" . "quail-py-b5"))
-  )
-
 (set-language-info-alist
- "Chinese-BIG5" '((setup-function . setup-chinese-big5-environment)
+ "Chinese-BIG5" '((setup-function . (setup-chinese-big5-environment
+                                    . setup-chinese-environment-map))
                  (charset . (chinese-big5-1 chinese-big5-2))
-                 (coding-system . (coding-system-big5
-                                   coding-system-iso-2022-cn))
-                 (documentation . t)
-                 (sample-text . "Cantonese (\e$(0GnM$\e(B,\e$(0N]0*Hd\e(B) \e$(0*/=(\e(B, \e$(0+$)p\e(B")))
+                 (coding-system . (chinese-big5 chinese-iso-7bit))
+                 (sample-text . "Cantonese (\e$(0GnM$\e(B,\e$(0N]0*Hd\e(B) \e$(0*/=(\e(B, \e$(0+$)p\e(B")
+                 (documentation . ("Support for Chinese Big5 character set."
+                                   . describe-chinese-environment-map))
+                 ))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Chinese CNS11643 (traditional)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(register-input-method
- "Chinese-CNS" '("quail-quick-cns" quail-use-package "quail/quick-cns"))
-(register-input-method
- "Chinese-CNS" '("quail-tsangchi-cns" quail-use-package "quail/tsangchi-cns"))
-
-(defun setup-chinese-cns-environment ()
-  (setq primary-language "Chinese-CNS")
-
-  (setq coding-category-iso-else 'coding-system-iso-2022-cn)
-
-  (set-coding-priority
-   '(coding-category-iso-7
-     coding-category-iso-else
-     coding-category-big5))
-
-  (setq-default buffer-file-coding-system 'coding-system-iso-2022-7)
-  (set-terminal-coding-system 'coding-system-iso-2022-7)
-  (set-keyboard-coding-system 'coding-system-iso-2022-7)
-
-  (setq default-input-method '("Chinese-CNS" . "quail-py-cns"))
-  )
-
 (set-language-info-alist
- "Chinese-CNS" '((setup-function . setup-chinese-cns-environment)
+ "Chinese-CNS" '((setup-function . (setup-chinese-cns-environment
+                                   . setup-chinese-environment-map))
                 (charset . (chinese-cns11643-1 chinese-cns11643-2
                             chinese-cns11643-3 chinese-cns11643-4
                             chinese-cns11643-5 chinese-cns11643-6
                             chinese-cns11643-7))
-                (coding-system . (coding-system-iso-2022-cn))
-                (documentation . t)))
+                (coding-system . (chinese-iso-7bit))
+                (documentation . ("Support for Chinese CNS character sets."
+                                  . describe-chinese-environment-map))
+                ))
 
 ;;; chinese.el ends here