tamago-4.0.6
[elisp/tamago.git] / egg-sim-old.el
diff --git a/egg-sim-old.el b/egg-sim-old.el
new file mode 100644 (file)
index 0000000..150ecaa
--- /dev/null
@@ -0,0 +1,514 @@
+;;; egg-sim.el --- EGG Simple Input Method
+
+;; Copyright (C) 2000 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
+;; Copyright (C) 2000 TOMURA Satoru <tomura@etl.go.jp>
+
+
+;; Author: TOMURA Satoru <tomura@etl.go.jp>
+
+;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
+
+;; Keywords: mule, multilingual, input method
+
+;; This file is part of EGG.
+
+;; EGG is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; EGG is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+;;; This code is based on egg-jsymbol.el of Egg V3.
+
+;;; 92.10.18 modified for Mule Ver.0.9.6 by K.Handa <handa@etl.go.jp>
+;;;    Moved from egg.el
+;;; 92.12.26 modified for Mule Ver.0.9.7 by T.Shingu <shingu@cpr.canon.co.jp>
+;;;    JIS Hojo Kanji support.
+
+(require 'menudiag)
+
+(provide 'egg-sim)
+
+(defun make-char-list (charset &optional from to)
+  (let ((result nil)
+       (chars (charset-chars charset))
+       min max)
+    (setq min (if (= chars 96) 32 33)
+         max (if (= chars 96) 127 126))
+    (setq from (if from (+ min (1- from)) min)
+         to   (if to (+ min (1- to)) max))
+    (and (<= min from)
+        (<= to max)
+        (cond ((= (charset-dimension charset) 1)
+               (while (<= from to)
+                 (setq result (cons (char-to-string
+                                     (make-char charset to))
+                                    result)
+                       to (1- to)))
+               result)
+              ((= (charset-dimension charset) 2)
+               (while (<= from to)
+                 (let ((code max))
+                   (while (<= min code)
+                     (setq result (cons (char-to-string
+                                         (make-char charset to code))
+                                        result)
+                           code (1- code))))
+                 (setq to (1- to)))
+               result)))))
+
+(defvar egg-sim-ascii-menu
+  '(menu "ASCII:" ,(make-char-list 'ascii)))
+
+(defvar egg-sim-latin-1-menu
+  `(menu "ISO 8859-1:" ,(make-char-list 'latin-iso8859-1)))
+
+(defvar egg-sim-latin-2-menu
+  `(menu "ISO 8859-2:" ,(make-char-list 'latin-iso8859-2)))
+
+(defvar egg-sim-latin-3-menu
+  `(menu "ISO 8859-3:" ,(make-char-list 'latin-iso8859-3)))
+
+(defvar egg-sim-latin-4-menu
+  `(menu "ISO 8859-4:" ,(make-char-list 'latin-iso8859-4)))
+
+(defvar egg-sim-latin-5-menu
+  `(menu "ISO 8859-9:" ,(make-char-list 'latin-iso8859-9)))
+
+(defvar egg-sim-cyrillic-menu
+  `(menu "ISO 8859-5:" ,(make-char-list 'cyrillic-iso8859-5)))
+
+(defvar egg-sim-arabic-menu
+  `(menu "ISO 8859-6:" ,(make-char-list 'arabic-iso8859-6)))
+
+(defvar egg-sim-greek-menu
+  `(menu "ISO 8859-7:" ,(make-char-list 'greek-iso8859-7)))
+
+(defvar egg-sim-hebrew-menu
+  `(menu "ISO 8859-8:" ,(make-char-list 'hebrew-iso8859-8)))
+
+(defvar egg-sim-thai-menu
+  `(menu "TIS620.2529:" ,(make-char-list 'thai-tis620)))
+
+(defvar egg-sim-lao-menu
+  `(menu "lao:"         ,(make-char-list 'lao)))
+
+(defvar egg-sim-vietnamese-menu
+  `(menu "Vietnamese:"
+        (("VISCII1.1(lower-case)" .
+          (menu "VISCII1.1 lower-case:" 
+                ,(make-char-list 'vietnamese-viscii-lower)))
+         ("VISCII1.1(upper-case)" . 
+          (menu "VISCII1.1 upper-case:"
+                ,(make-char-list 'vietnamese-viscii-upper))))))
+
+(defvar egg-sim-chinese-big5-menu
+  `(menu "Big5:"
+        (("Level1" .
+          (menu "Big 5 Level1:" , (make-char-list 'chinese-big5-1)))
+         ("Level2" .
+          (menu "Big 5 Level2:" , (make-char-list 'chinese-big5-2))))))
+
+(defvar egg-sim-chinese-cns-menu
+  `(menu "CNS 11643:"
+        (("Plane-1" .
+          (menu "CNS 11643-1:" ,(make-char-list 'chinese-cns11643-1)))
+         ("Plane- 2" .
+          (menu "CNS 11643-2:" ,(make-char-list 'chinese-cns11643-2)))
+         ("Plane-3" .
+          (menu "CNS 11643-3:" ,(make-char-list 'chinese-cns11643-3)))
+         ("Plane-4" .
+          (menu "CNS 11643-4:" ,(make-char-list 'chinese-cns11643-4)))
+         ("Plane-5" .
+          (menu "CNS 11643-5:" ,(make-char-list 'chinese-cns11643-5)))
+         ("Plane-6" .
+          (menu "CNS 11643-6:" ,(make-char-list 'chinese-cns11643-6)))
+         ("Plane-7" .
+          (menu "CNS 11643-7:" ,(make-char-list 'chinese-cns11643-7))))))
+
+(defvar egg-sim-chinese-gb-menu
+  `(menu "GB 2312:" 
+        (("All" . 
+          (menu "GB 2312:" ,(make-char-list 'chinese-gb2312)))
+         ("Symbols" . 
+          (menu "GB2312/1:" ,(make-char-list 'chinese-gb2312 1 1)))
+         ("Numbers" . 
+          (menu "GB2312/2:" ,(make-char-list 'chinese-gb2312 2 2)))
+         ("Fullwidth ASCII" . 
+          (menu "GB2312/3:" ,(make-char-list 'chinese-gb2312 3 3)))
+         ("Hiragana" .
+          (menu "GB2312/4:" ,(make-char-list 'chinese-gb2312 4 4)))
+         ("Katanaka" . 
+          (menu "GB2312/5:" ,(make-char-list 'chinese-gb2312 5 5)))
+         ("Greek" . 
+          (menu "GB2312/6:" ,(make-char-list 'chinese-gb2312 6 6)))
+         ("Cyrillic" . 
+          (menu "GB2312/7:" ,(make-char-list 'chinese-gb2312 7 7)))
+         ("Pinyin/Bopomofo" . 
+          (menu "GB2312/8:" ,(make-char-list 'chinese-gb2312 8 8)))
+         ("Box Drawings" . 
+          (menu "GB2312/9:" ,(make-char-list 'chinese-gb2312 9 9)))
+         )))
+
+(defvar egg-sim-chinese-menu
+  `(menu "Chinese:"
+        (("GB2312"  . , egg-sim-chinese-gb-menu)
+         ("CNS11643" . , egg-sim-chinese-cns-menu)
+         ("Big5" . , egg-sim-chinese-big5-menu))))
+
+(defvar egg-sim-korean-menu
+  `(menu "Korean:"
+        (("KSC5601"  .
+          (menu "KSC 5601:" ,(make-char-list 'korean-ksc5601)))
+         ("Symbol" .
+          (menu "KSC 5601/1-2:" ,(make-char-list 'korean-ksc5601 1 2)))
+         ("Fullwidth ASCII" .
+          (menu "KSC 5601/3:" , (make-char-list 'korean-ksc5601 3 3)))
+         ("Jamo" .
+          (menu "KSC 5601/4:" , (make-char-list 'korean-ksc5601 4 4)))
+         ("Roman Number/Greek" .
+          (menu "KSC 5601/5:" , (make-char-list 'korean-ksc5601 5 5)))
+         ("Box Drawings" .
+          (menu "KSC 5601/6:" , (make-char-list 'korean-ksc5601 6 6)))
+         ("Unit" .
+          (menu "KSC 5601/7:" , (make-char-list 'korean-ksc5601 7 7)))
+         ("Misc." .
+          (menu "KSC 5601/8-9:" , (make-char-list 'korean-ksc5601 8 9)))
+         ("Hiragana" .
+          (menu "KSC 5601/10:" , (make-char-list 'korean-ksc5601 10 10)))
+         ("Katakana" .
+          (menu "KSC 5601/11:" , (make-char-list 'korean-ksc5601 11 11)))
+         ("Cyrillic" .
+          (menu "KSC 5601/12:" , (make-char-list 'korean-ksc5601 12 12)))
+         ("Hangul" .
+          (menu "KSC 5601/16-40:" , (make-char-list 'korean-ksc5601 16 40)))
+         ("Hanja" .
+          (menu "KSC 5601/42-93:" , (make-char-list 'korean-ksc5601 42 93))))))
+
+(defvar egg-sim-japanese-menu 
+  `(menu "Japanese:"
+        (("JISX0201" .
+          ,(append (make-char-list 'latin-jisx0201)
+                   (make-char-list 'katakana-jisx0201)))
+         ("JISX0208" .
+          (menu "JIS X 0208:" ,(make-char-list 'japanese-jisx0208)))
+         ("JISX0212" .
+          (menu "JIS X 0212:" ,(make-char-list 'japanese-jisx0212)))
+         ("JISX0208/0212" .
+          (menu "\e$B5-9fF~NO\e(B:"
+                (("JIS\e$BF~NO\e(B" . japanese-jisx0208)
+                 ("\e$B5-9f\e(B"     . 
+                  (menu "\e$B5-9f\e(B:"     , (make-char-list 'japanese-jisx0208 1 2)))
+                 ("\e$B1Q?t;z\e(B"   . 
+                  (menu "\e$B1Q?t;z\e(B:"   , (make-char-list 'japanese-jisx0208 3 3)))
+                 ("\e$B$R$i$,$J\e(B" . 
+                  (menu "\e$B$R$i$,$J\e(B:" , (make-char-list 'japanese-jisx0208 4 4)))
+                 ("\e$B%+%?%+%J\e(B" . 
+                  (menu "\e$B%+%?%+%J\e(B:" , (make-char-list 'japanese-jisx0208 5 5)))
+                 ("\e$B%.%j%7%cJ8;z\e(B" . 
+                  (menu "\e$B%.%j%7%cJ8;z\e(B:" , (make-char-list 'japanese-jisx0208 6 6)))
+                 ("\e$B%-%j%kJ8;z\e(B" . 
+                  (menu "\e$B%-%j%kJ8;z\e(B:" , (make-char-list 'japanese-jisx0208 7 7)))
+                 ("\e$B7S@~\e(B" . 
+                  (menu "\e$B7S@~\e(B:" , (make-char-list 'japanese-jisx0208 8 8)))
+                         ;;;"\e$BIt<sF~NO\e(B"  (bushyu-input)
+                          ;;; "\e$B2h?tF~NO\e(B" (kakusuu-input)
+                 ("\e$BBh0l?e=`\e(B" . 
+                  (menu "\e$BBh0l?e=`\e(B:" , (make-char-list 'japanese-jisx0208 16 47)))
+                 ("\e$BBhFs?e=`\e(B" . 
+                  (menu "\e$BBhFs?e=`\e(B:" , (make-char-list 'japanese-jisx0208 48 84)))
+                 ("\e$BJd=u4A;z\e(B" . 
+                  (menu "\e$BJd=u4A;z\e(B:" , (make-char-list 'japanese-jisx0212 2 77)))))))))
+
+(defvar egg-sim-ipa-menu
+  `(menu "IPA:" ,(make-char-list 'ipa)))
+
+(defvar egg-sisheng-menu
+  `(menu "SiSheng characters" ,(make-char-list 'chinese-sisheng)))
+
+(defvar egg-sim-code-input-menu
+  `(menu "Charset:"
+        (("JISX0208" . japanese-jisx0208)
+         ("JISX0212" . japanese-jisx0212)
+         ("CNS11643-1" . chinese-cns11634-1)
+         ("CNS11643-2" . chinese-cns11634-2)
+         ("CNS11643-3" . chinese-cns11634-3)
+         ("CNS11643-4" . chinese-cns11634-4)
+         ("CNS11643-5" . chinese-cns11634-5)
+         ("CNS11643-6" . chinese-cns11634-6)
+         ("CNS11643-7" . chinese-cns11634-7)
+         ("Big5-1" . chinese-big5-1)
+         ("Big5-2" . chinese-big5-2)
+         ("GB2312" . chinese-gb2312)
+         ("KSC5601" . korean-ksc5601))))
+
+(defvar egg-simple-input-method-menu-item-list
+  `(("Code Input" . ,egg-sim-code-input-menu)
+    ("Arabic"   . , egg-sim-arabic-menu)
+    ("ASCII"    . , egg-sim-ascii-menu)
+    ("Chinese"  . , egg-sim-chinese-menu)
+    ("Cyrillic" . , egg-sim-cyrillic-menu)
+    ("Greek"    . , egg-sim-greek-menu)
+    ("Hebrew"   . , egg-sim-hebrew-menu)
+    ("Japanese" . , egg-sim-japanese-menu)
+    ("Korean"   . , egg-sim-korean-menu)
+    ("Latin" . 
+     (menu "Latin:"
+          (("Latin-1" . , egg-sim-latin-1-menu)
+           ("Latin-2" . , egg-sim-latin-2-menu)
+           ("Latin-3" . , egg-sim-latin-3-menu)
+           ("Latin-4" . , egg-sim-latin-4-menu)
+           ("Latin-5" . , egg-sim-latin-5-menu))))
+    ("Thai/Lao" . 
+     (menu "Thai/Lao:"
+          (("Thai" . , egg-sim-thai-menu)
+           ("Lao"  . , egg-sim-lao-menu))))
+    ("Vietnamese" . , egg-sim-vietnamese-menu)
+    ("Phonetic code" . 
+     (menu "Phonetic code:"
+          (("SISHENG" . , egg-sisheng-menu)
+           ("IPA" .  , egg-sim-ipa-menu))))
+    ))
+
+(defvar egg-language-environment-alist 
+  `(("ASCII"         . , egg-sim-ascii-menu)
+    ("Chinese-BIG5"  . , egg-sim-chinese-big5-menu)
+    ("Chinese-CNS"   . , egg-sim-chinese-cns-menu)
+    ("Chinese-GB"    . , egg-sim-chinese-gb-menu)
+    ("Cyrillic-ISO"  . , egg-sim-cyrillic-menu)
+    ("Cyrillic-KOI8" . , egg-sim-cyrillic-menu)
+    ("Cyrillic-ALT"  . , egg-sim-cyrillic-menu)
+    ("Czech"         . , egg-sim-latin-2-menu)
+    ("Devanagari")
+    ("English"       . , egg-sim-ascii-menu)
+    ("Ethiopic")
+    ("German"        . , egg-sim-latin-1-menu)
+    ("Greek"         . , egg-sim-greek-menu)
+    ("Hebrew"        . , egg-sim-hebrew-menu)
+    ("Hindi")
+    ("IPA"           . , egg-sim-ipa-menu)
+    ("Japanese"      . , egg-sim-japanese-menu)
+    ("Korean"        . , egg-sim-korean-menu)
+    ("Lao"           . , egg-sim-lao-menu)
+    ("Latin-1"       . , egg-sim-latin-1-menu)
+    ("Latin-2"       . , egg-sim-latin-2-menu)
+    ("Latin-3"       . , egg-sim-latin-3-menu)
+    ("Latin-4"       . , egg-sim-latin-4-menu)
+    ("Latin-5"       . , egg-sim-latin-5-menu)
+    ("Romaian"       . , egg-sim-latin-2-menu)
+    ("Slovenian"     . , egg-sim-latin-2-menu)
+    ("Slovak"        . , egg-sim-latin-2-menu)
+    ("Thai"          . , egg-sim-thai-menu)
+    ("Tibetan")
+    ("Turkish"       . , egg-sim-latin-5-menu)
+    ("Vietnamese"    . , egg-sim-vietnamese-menu)))
+
+(defvar egg-simple-input-method-menu
+  `(menu "Character set:" , egg-simple-input-method-menu-item-list))
+
+;;;;###autoload
+(defun egg-simple-input-method()
+  (interactive)
+  (let ((result (egg-simple-input-menu)))
+    (cond((stringp result)
+         (insert result))
+        ((symbolp result)
+         (egg-character-code-input result
+                                   (format "%s/Character Code in Hexadecimal:"
+                                           (charset-description result)))))))
+
+(defun egg-simple-input-menu ()
+  (let ((menu (cdr-safe (assoc current-language-environment 
+                              egg-language-environment-alist))))
+    (if menu
+       (menudiag-select
+        `(menu "Character set:" ,(cons (cons current-language-environment
+                                             menu)
+                                       egg-simple-input-method-menu-item-list)))
+      (menudiag-select egg-simple-input-method-menu))))
+
+(defun egg-character-code-input (charset prompt)
+  (egg-insert-character-code-from-minibuffer charset prompt))
+
+(defun egg-insert-character-code-from-minibuffer (charset prompt)
+  (let ((str (read-from-minibuffer prompt)) val)
+    (while (null (setq val (egg-read-character-code-from-string str charset)))
+      (beep)
+      (setq str (read-from-minibuffer prompt str)))
+    (insert (make-char charset (car val) (cdr val)))))
+
+(defun egg-hexadigit-value (ch)
+  (cond((and (<= ?0 ch) (<= ch ?9))
+       (- ch ?0))
+       ((and (<= ?a ch) (<= ch ?f))
+       (+ (- ch ?a) 10))
+       ((and (<= ?A ch) (<= ch ?F))
+       (+ (- ch ?A) 10))))
+
+(defun egg-read-character-code-from-string (str charset)
+  (if (and (= (length str) 4)
+          (<= 2 (egg-hexadigit-value (aref str 0)))
+          (egg-hexadigit-value (aref str 1))
+          (<= 2 (egg-hexadigit-value (aref str 2)))
+          (egg-hexadigit-value (aref str 3)))
+      (let ((code1 (+ (* 16 (egg-hexadigit-value (aref str 0)))
+                     (egg-hexadigit-value (aref str 1))))
+           (code2 (+ (* 16 (egg-hexadigit-value (aref str 2)))
+                     (egg-hexadigit-value (aref str 3))))
+           (min (if (= (charset-chars charset) 94)
+                    33 32))
+           (max (if (= (charset-chars charset) 94)
+                    126 127)))
+       (and (<= min code1)
+            (<= code1 max)
+            (<= min code2)
+            (<= code2 max)
+            (cons code1 code2)))))
+
+;;;
+;;;
+;;;
+
+(defun make-non-iso2022-code-table-file (name)
+  (with-temp-file name
+    (set-buffer-multibyte nil)
+    (insert ";;; -*- coding: -*-\n\n")
+    (insert " |")
+
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "  %X " i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (insert "-+")
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "----" i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "%X|" i))
+       (let ((j 0) (c i))
+         (while (< j 16)
+           (insert (format " \"%c\"" c))
+           (setq j (1+ j)
+                 c (+ c 16)))
+         (insert (format "\n")))
+       (setq i (1+ i))))))
+
+(defun make-iso2022-94char-code-table-file (name)
+  (with-temp-file name
+    (set-buffer-multibyte nil)
+    (insert ";;; -*- coding: -*-\n\n")
+    (insert " |")
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "  %X " i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (insert "-+")
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "----" i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "%X|" i))
+       (let ((j 0) (c i))
+         (while (< j 16)
+           (if (or (<= c 31)
+                   (= c 127)
+                   (and (<= 128 c)
+                        (<= c 160))
+                   (= c 255))
+               (insert "    ")
+             (insert (format " \"%c\"" c)))
+           (setq j (1+ j)
+                 c (+ c 16)))
+         (insert (format "\n")))
+       (setq i (1+ i))))))
+  
+(defun make-iso2022-96char-code-table-file (name)
+  (with-temp-file name
+    (set-buffer-multibyte nil)
+    (insert ";;; -*- coding: -*-\n\n")
+    (insert " |")
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "  %X " i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (insert "-+")
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "----" i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (let ((i 0))
+      (while (< i 16)
+       (insert (format "%X|" i))
+       (let ((j 0) (c i))
+         (while (< j 16)
+           (if (or (<= c 31)
+                   (= c 127)
+                   (and (<= 128 c)
+                        (< c 160)))
+               (insert "    ")
+             (insert (format " \"%c\"" c)))
+           (setq j (1+ j)
+                 c (+ c 16)))
+         (insert (format "\n")))
+       (setq i (1+ i))))))
+
+(defun make-euc-code-table-file (name)
+  (with-temp-file name
+    (set-buffer-multibyte nil)
+    (insert ";;; -*- coding: -*-\n\n")
+    (insert "  |")
+    (let ((i 1))
+      (while (<= i 94)
+        ;;                "XX"
+       (insert (format "  %02d " i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (insert "-+")
+    (let ((i 1))
+      (while (<= i 94)
+       (insert (format "-----" i))
+       (setq i (1+ i))))
+    (insert "\n")
+
+    (let ((i 1))
+      (while (<= i 94)
+       (insert (format "%02d|" i))
+       (let ((j 1))
+         (while (<= j 94)
+           (insert (format " \"%c%c\""
+                           (+ i 32 128)
+                           (+ j 32 128)))
+           (setq j (1+ j)))
+         (insert (format "\n")))
+       (setq i (1+ i))))))
\ No newline at end of file