Commit 8f3969f8 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

In setup-LANGUAGE-environment functions,

call set-language-environment-coding-systems.
parent 5e92d2b8
......@@ -29,25 +29,7 @@
"Setup multilingual environment (MULE) for Chinese GB2312 users."
(interactive)
(setup-english-environment)
(set-default-coding-systems 'chinese-iso-8bit)
(setq coding-category-iso-8-2 'chinese-iso-8bit)
(setq coding-category-iso-7-else 'chinese-iso-7bit)
(setq coding-category-big5 'chinese-big5)
(set-coding-priority
'(coding-category-iso-7
coding-category-iso-7-else
coding-category-iso-8-2
coding-category-big5
coding-category-iso-8-1
coding-category-emacs-mule
coding-category-iso-8-else))
(setq-default buffer-file-coding-system 'chinese-iso-8bit)
(setq default-terminal-coding-system 'chinese-iso-8bit)
(setq default-keyboard-coding-system 'chinese-iso-8bit)
(set-language-environment-coding-systems "Chinese-GB")
(setq default-input-method "chinese-py-punct"))
;;;###autoload
......@@ -55,24 +37,7 @@
"Setup multilingual environment (MULE) for Chinese Big5 users."
(interactive)
(setup-english-environment)
(set-default-coding-systems 'chinese-big5)
(setq coding-category-iso-8-2 'chinese-big5)
(setq coding-category-iso-7-else 'chinese-iso-7bit)
(setq coding-category-big5 'chinese-big5)
(set-coding-priority
'(coding-category-iso-7
coding-category-iso-7-else
coding-category-big5
coding-category-iso-8-2
coding-category-emacs-mule
coding-category-iso-8-else))
(setq-default buffer-file-coding-system 'chinese-big5)
(setq default-terminal-coding-system 'chinese-big5)
(setq default-keyboard-coding-system 'chinese-big5)
(set-language-environment-coding-systems "Chinese-BIG5")
(setq default-input-method "chinese-py-punct-b5"))
;;;###autoload
......@@ -80,23 +45,7 @@
"Setup multilingual environment (MULE) for Chinese CNS11643 family users."
(interactive)
(setup-english-environment)
(setq coding-category-iso-7-else 'chinese-iso-7bit)
(setq coding-category-big5 'chinese-big5)
(setq coding-category-iso-8-2 'chinese-big5)
(set-default-coding-systems 'chinese-iso-7bit)
(set-coding-priority
'(coding-category-iso-7
coding-category-iso-7-else
coding-category-iso-8-2
coding-category-big5
coding-category-iso-7-else))
(setq-default buffer-file-coding-system 'chinese-iso-7bit)
(setq default-terminal-coding-system 'chinese-iso-7bit)
(setq default-keyboard-coding-system 'chinese-iso-7bit)
(set-language-environment-coding-systems "Chinese-CNS")
(setq default-input-method "chinese-quick-cns"))
;; Hz/ZW encoding stuffs
......@@ -122,11 +71,23 @@
;; Regexp of ZW sequence to start GB2312.
(defvar zw-start-gb "^zW")
;; Regexp for start of GB2312 in an encoding mixture of HZ and ZW.
(defvar hz/zw-start-gb (concat hz-gb-designnation "\\|" zw-start-gb))
(defvar hz/zw-start-gb
(concat hz-gb-designnation "\\|" zw-start-gb "\\|[^\0-\177]"))
(defvar decode-hz-line-continuation nil
"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))
;;;###autoload
(defun decode-hz-region (beg end)
"Decode HZ/ZW encoded text in the current region.
......@@ -134,49 +95,46 @@ Return the length of resulting text."
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region beg end)
;; We, at first, convert HZ/ZW to `iso-2022-7bit',
;; then decode it.
;; "~\n" -> "\n"
(goto-char (point-min))
(while (search-forward "~" nil t)
(if (= (following-char) ?\n) (delete-char -1))
(if (not (eobp)) (forward-char 1)))
;; "^zW...\n" -> Chinese GB2312
;; "~{...~}" -> Chinese GB2312
(goto-char (point-min))
(let ((chinese-found nil))
(let (pos ch)
(narrow-to-region beg end)
;; We, at first, convert HZ/ZW to `euc-china',
;; then decode it.
;; "~\n" -> "\n", "~~" -> "~"
(goto-char (point-min))
(while (search-forward "~" nil t)
(setq ch (following-char))
(if (or (= ch ?\n) (= ch ?~)) (delete-char -1)))
;; "^zW...\n" -> Chinese GB2312
;; "~{...~}" -> Chinese GB2312
(goto-char (point-min))
(setq beg nil)
(while (re-search-forward hz/zw-start-gb nil t)
(if (= (char-after (match-beginning 0)) ?z)
;; ZW -> iso-2022-7bit
(progn
(delete-char -2)
(insert iso2022-gb-designation)
(end-of-line)
(insert iso2022-ascii-designation))
;; HZ -> iso-2022-7bit
(delete-char -2)
(insert iso2022-gb-designation)
(let ((pos (save-excursion (end-of-line) (point))))
(if (search-forward hz-ascii-designnation pos t)
(replace-match iso2022-ascii-designation)
(if (not decode-hz-line-continuation)
(insert iso2022-ascii-designation)))))
(setq chinese-found t))
(if (or chinese-found
(let ((enable-multibyte-characters nil))
;; Here we check if the text contains EUC (China) codes.
;; If any, we had better decode them also.
(goto-char (point-min))
(re-search-forward "[\240-\377]" nil t)))
(decode-coding-region (point-min) (point-max) 'euc-china)))
;; "~~" -> "~"
(goto-char (point-min))
(while (search-forward "~~" nil t) (delete-char -1))
(setq pos (match-beginning 0)
ch (char-after pos))
;; Record the first position to start conversion.
(or beg (setq beg pos))
(end-of-line)
(setq end (point))
(if (>= ch 128) ; 8bit GB2312
nil
(goto-char pos)
(delete-char 2)
(setq end (- end 2))
(if (= ch ?z) ; ZW -> euc-china
(progn
(translate-region (point) end hz-set-msb-table)
(goto-char end))
(if (search-forward hz-ascii-designnation
(if decode-hz-line-continuation nil end)
t)
(delete-char -2))
(setq end (point))
(translate-region pos (point) hz-set-msb-table))))
(if beg
(decode-coding-region beg end 'euc-china)))
(- (point-max) (point-min)))))
;;;###autoload
......
......@@ -29,24 +29,9 @@
"Setup multilingual environment (MULE) for Japanese."
(interactive)
(setup-english-environment)
(setq coding-category-iso-8-2 'japanese-iso-8bit)
(setq coding-category-iso-8-else 'japanese-iso-8bit)
(set-coding-priority
'(coding-category-iso-7
coding-category-iso-8-2
coding-category-sjis
coding-category-iso-8-1
coding-category-iso-7-else
coding-category-iso-8-else
coding-category-emacs-mule))
(set-default-coding-systems
(if (eq system-type 'ms-dos)
'japanese-shift-jis
'iso-2022-jp))
(set-language-environment-coding-systems "Japanese")
(if (eq system-type 'ms-dos)
(prefer-coding-system 'japanese-shift-jis))
(setq default-input-method "japanese"))
(defconst japanese-kana-table
......
......@@ -65,14 +65,7 @@
"Setup multilingual environment (MULE) for Korean."
(interactive)
(setup-english-environment)
(setq coding-category-iso-8-2 'korean-iso-8bit)
(set-coding-priority
'(coding-category-iso-7
coding-category-iso-8-2
coding-category-iso-8-1))
(set-default-coding-systems 'korean-iso-8bit)
(set-language-environment-coding-systems "Korean")
(setq default-input-method "korean-hangul")
......
......@@ -36,10 +36,7 @@
(defun setup-tibetan-environment ()
(interactive)
(setup-english-environment)
(setq coding-category-iso-8-2 'tibetan)
(setq-default buffer-file-coding-system 'iso-2022-7bit)
(set-language-environment-coding-systems "Tibetan")
(setq default-input-method "tibetan-wylie"))
;;; This function makes a transcription string for
......
......@@ -39,9 +39,7 @@
(defun setup-vietnamese-environment ()
"Setup multilingual environment (MULE) for Vietnamese VISCII users."
(interactive)
(setup-8-bit-environment "Vietnamese" nil 'vietnamese-viscii
"vietnamese-viqr")
(setq coding-category-raw-text 'vietnamese-viscii))
(setup-8-bit-environment "Vietnamese" nil "vietnamese-viqr"))
;; VIQR is a menmonic encoding specification for Vietnamese.
;; It represents diacritical marks by ASCII characters as follows:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment