]> code.delx.au - gnu-emacs/blobdiff - leim/quail/indian.el
(font-lock-comment-face, font-lock-set-defaults, font-lock-string-face):
[gnu-emacs] / leim / quail / indian.el
index c00f8a23695a8a315540f1b979da60e673508122..8e42ae7c3a7221ea1e20bc99185f25e3ecea0798 100644 (file)
@@ -20,8 +20,8 @@
 
 ;; 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.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 (defvar quail-indian-update-preceding-char nil)
 (make-variable-frame-local 'quail-indian-update-preceding-char)
 
-;;; update function
-
-;; CONTROL-FLAG is integer (n)
+;; Input value ::
+;;   CONTROL-FLAG is integer `n'
 ;;     quail-current-key :: keyboard input.
-;;                          Only first n can be translated.
-;;     quail-current-string :: corresonding string.  Translated when last
-;;                             time CONTROL-FLAG is nil.
-;;     todo :: (1) put last (len-n) char to unrread-command-event.
-;;             (2) put translated string to  quail-current-string.
+;;                          Only first `n' can be translated.
+;;     quail-current-str :: corresonding string. 
+;;     jobs :: (1) put last (len-n) char to unrread-command-event.
+;;             (2) put translated string to  quail-current-str.
 ;;
-;; CONTROL-FLAG is t (terminate) or nil (proceed the translation)
+;;   CONTROL-FLAG is t (terminate) or nil (proceed the translation)
 ;;     quail-current-key :: keyboard input.
-;;     quail-current-string :: corresponding string.  Created by database.
-;;     todo :: (1) put modified translated string to quail-current-string.
+;;     quail-current-str :: corresponding string.
+;;     jobs :: (1) put modified translated string to quail-current-str.
+;;
+;; When non-nil value is returned from quail-translation-update-function, 
+;; the quail-current-str is split to characters and put into event queue, 
+;; with `compose-last-char' event with composition info at the end.
 
 (defun quail-indian-update-translation (control-flag)
-  ;;(message "input control-flag=%s, string=%s, key=%s"
-  ;;         control-flag quail-current-str quail-current-key)
   ;; make quail-current-str string when possible.
   (if (char-valid-p quail-current-str)
       (setq quail-current-str (char-to-string quail-current-str)))
+  ;(message "\n input control-flag=%s, str=%s, key=%s q-ind-upd-prec-char=%s"
+  ;         control-flag quail-current-str quail-current-key
+  ;         quail-indian-update-preceding-char)
   ;; reset quail-indian-update-preceding-char if it's initial.
   (if (= (overlay-start quail-overlay) (overlay-end quail-overlay))
       (setq quail-indian-update-preceding-char nil))
-  ;; set quial-indian-update-preceding-char if appropriate.
+  ;; Check the preceding character of the quail region.  If the
+  ;; preceding character can be composed with quail-current-str, then
+  ;; grab that preceding character into the quail-current-str and
+  ;; remove that char from the region.  
   (let* (prec-char-position composition-regexp
          prec-char-str candidate-str match-pos match-end)
     (when (and quail-current-str
+               (null quail-indian-update-preceding-char)
                (null input-method-use-echo-area)
                (null input-method-exit-on-first-char)
                (setq prec-char-position
@@ -85,7 +92,6 @@
                      (if prec-char-position
                          (caar (elt composition-function-table
                                     (char-after prec-char-position)))))
-               ;; (null quail-indian-update-preceding-char)
                (setq prec-char-str
                      (buffer-substring prec-char-position
                                        (overlay-start quail-overlay))
       (setq quail-indian-update-preceding-char prec-char-str)
       (delete-region prec-char-position
                      (overlay-start quail-overlay))))
-  ;; make quail-current-str string when possible.
-  (if (null quail-current-str)
-      (setq quail-current-str ""))
-  ;; set quail-current-str unless control-flag is number.
+  (setq quail-current-str 
+        (indian-compose-string
+         (concat quail-indian-update-preceding-char 
+                 quail-current-str)))
   (if (numberp control-flag)
-      (setq quail-indian-update-preceding-char nil
-            quail-current-str
-            (if (equal quail-current-str "")
-                (substring quail-current-key 0 control-flag)
-              (indian-compose-string quail-current-str))
-            unread-command-events
+      (setq unread-command-events
             (string-to-list
-             (substring quail-current-key control-flag)))
-    (if quail-indian-update-preceding-char
-        (setq quail-current-str
-              (concat quail-indian-update-preceding-char
-                      quail-current-str)))
-    (setq quail-current-str
-          (indian-compose-string quail-current-str)))
-  (when (eq t control-flag)
-    ;; reset preceding-char if translation is terminated.
+             (substring quail-current-key control-flag))))
+  (when control-flag
     (setq quail-indian-update-preceding-char nil))
-    ;; compose to previous char if it looks possible.
-  ;;(message "  out control-flag=%s, string=%s, key=%s"
-  ;;         control-flag quail-current-str quail-current-key)
+  ;(message "output control-flag=%s, str=%s, key=%s q-ind-upd-prec-char=%s"
+  ;         control-flag quail-current-str quail-current-key
+  ;         quail-indian-update-preceding-char)
   control-flag)
 
 ;;;
           nil nil nil nil nil nil t nil
           'quail-indian-update-translation)
   (maphash
-   '(lambda (key val)
-      (quail-defrule key (if (= (length val) 1)
-                            (string-to-char val)
-                          (vector val))))
+   (lambda (key val)
+     (quail-defrule key (if (= (length val) 1)
+                           (string-to-char val)
+                         (vector val))))
    (cdr hashtbls)))
 
-;;
-;; (quail-define-package "devanagari-itrans" "Devanagari" "DevIT" t "Devanagari ITRANS")
+;; This needs to be seen by quail-update-leim-list-file, but cannot be
+;; commented out because quail-update-leim-list-file ignores
+;; commented-out lines.
+(if nil
+    (quail-define-package "devanagari-itrans" "Devanagari" "DevIT" t "Devanagari ITRANS"))
 (quail-define-indian-trans-package
  indian-dev-itrans-v5-hash "devanagari-itrans" "Devanagari" "DevIT"
  "Devanagari transliteration by ITRANS method.")
 
-;; (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard")
+(if nil
+    (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard"))
 (quail-define-indian-trans-package
  indian-dev-kyoto-harvard-hash
  "devanagari-kyoto-harvard" "Devanagari" "DevKH"
  "Devanagari transliteration by Kyoto-Harvard method.")
 
-;; (quail-define-package "devanagari-aiba" "Devanagari" "DevAB" t "Devanagari Aiba")
+(if nil
+    (quail-define-package "devanagari-aiba" "Devanagari" "DevAB" t "Devanagari Aiba"))
 (quail-define-indian-trans-package
  indian-dev-aiba-hash "devanagari-aiba" "Devanagari" "DevAB"
  "Devanagari transliteration by Aiba-method.")
 
+(if nil
+    (quail-define-package "punjabi-itrans" "Punjabi" "PnjIT" t "Punjabi ITRANS"))
+(quail-define-indian-trans-package
+ indian-pnj-itrans-v5-hash "punjabi-itrans" "Punjabi" "PnjIT"
+ "Punjabi transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "gujarati-itrans" "Gujarati" "GjrIT" t "Gujarati ITRANS"))
+(quail-define-indian-trans-package
+ indian-gjr-itrans-v5-hash "gujarati-itrans" "Gujarati" "GjrIT"
+ "Gujarati transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "oriya-itrans" "Oriya" "OriIT" t "Oriya ITRANS"))
+(quail-define-indian-trans-package
+ indian-ori-itrans-v5-hash "oriya-itrans" "Oriya" "OriIT"
+ "Oriya transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "bengali-itrans" "Bengali" "BngIT" t "Bengali ITRANS"))
+(quail-define-indian-trans-package
+ indian-bng-itrans-v5-hash "bengali-itrans" "Bengali" "BngIT"
+ "Bengali transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "assamese-itrans" "Assamese" "AsmIT" t "Assamese ITRANS"))
+(quail-define-indian-trans-package
+ indian-asm-itrans-v5-hash "assamese-itrans" "Assamese" "AsmIT"
+ "Assamese transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "telugu-itrans" "Telugu" "TlgIT" t "Telugu ITRANS"))
+(quail-define-indian-trans-package
+ indian-tlg-itrans-v5-hash "telugu-itrans" "Telugu" "TlgIT"
+ "Telugu transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "kannada-itrans" "Kannada" "KndIT" t "Kannada ITRANS"))
+(quail-define-indian-trans-package
+ indian-knd-itrans-v5-hash "kannada-itrans" "Kannada" "KndIT"
+ "Kannada transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "malayalam-itrans" "Malayalam" "MlmIT" t "Malayalam ITRANS"))
+(quail-define-indian-trans-package
+ indian-mlm-itrans-v5-hash "malayalam-itrans" "Malayalam" "MlmIT"
+ "Malayalam transliteration by ITRANS method.")
+
+(if nil
+    (quail-define-package "tamil-itrans" "Tamil" "TmlIT" t "Tamil ITRANS"))
+(quail-define-indian-trans-package
+ indian-tml-itrans-v5-hash "tamil-itrans" "Tamil" "TmlIT"
+ "Tamil transliteration by ITRANS method.")
+
+
 ;;;
 ;;; Input by Inscript
 ;;;
   (setq key-table (quail-indian-flatten-list key-table))
   (funcall 'quail-define-package pkgname lang title nil docstring
           nil nil nil nil nil nil nil nil
-          'quail-indian-update-translation
-          )
-  (mapcar*
-   '(lambda (key val)
-      (and key val
-          (quail-defrule
+          'quail-indian-update-translation)
+  (dolist (key key-table)
+    (let ((val (pop char-table)))
+      (if (and key val)
+         (quail-defrule
            (if (char-valid-p key) (char-to-string key) key)
-           (if (stringp val) (vector val) val))))
-   key-table char-table))
+           (if (stringp val) (vector val) val))))))
 
 ;;
 
     (;; Inscripts
      ?# ?$ ?^ ?* ?\])))
 
-;; (quail-define-package "devanagari-inscript" "Devanagari" "DevIS" t "Devanagari keyboard Inscript")
+(if nil
+    (quail-define-package "devanagari-inscript" "Devanagari" "DevIS" t "Devanagari keyboard Inscript"))
 (quail-define-inscript-package
  indian-dev-base-table inscript-dev-keytable
  "devanagari-inscript" "Devanagari" "DevIS"
  "Devanagari keyboard Inscript.")
 
+(if nil
+    (quail-define-package "punjabi-inscript" "Punjabi" "PnjIS" t "Punjabi keyboard Inscript"))
+(quail-define-inscript-package
+ indian-pnj-base-table inscript-dev-keytable
+ "punjabi-inscript" "Punjabi" "PnjIS"
+ "Punjabi keyboard Inscript.")
+
+(if nil
+    (quail-define-package "gujarati-inscript" "Gujarati" "GjrIS" t "Gujarati keyboard Inscript"))
+(quail-define-inscript-package
+ indian-gjr-base-table inscript-dev-keytable
+ "gujarati-inscript" "Gujarati" "GjrIS"
+ "Gujarati keyboard Inscript.")
+
+(if nil
+    (quail-define-package "oriya-inscript" "Oriya" "OriIS" t "Oriya keyboard Inscript"))
+(quail-define-inscript-package
+ indian-ori-base-table inscript-dev-keytable
+ "oriya-inscript" "Oriya" "OriIS"
+ "Oriya keyboard Inscript.")
+
+(if nil
+    (quail-define-package "bengali-inscript" "Bengali" "BngIS" t "Bengali keyboard Inscript"))
+(quail-define-inscript-package
+ indian-bng-base-table inscript-dev-keytable
+ "bengali-inscript" "Bengali" "BngIS"
+ "Bengali keyboard Inscript.")
+
+(if nil
+    (quail-define-package "assamese-inscript" "Assamese" "AsmIS" t "Assamese keyboard Inscript"))
+(quail-define-inscript-package
+ indian-asm-base-table inscript-dev-keytable
+ "assamese-inscript" "Assamese" "AsmIS"
+ "Assamese keyboard Inscript.")
+
+(if nil
+    (quail-define-package "telugu-inscript" "Telugu" "TlgIS" t "Telugu keyboard Inscript"))
+(quail-define-inscript-package
+ indian-dev-base-table inscript-dev-keytable
+ "telugu-inscript" "Telugu" "TlgIS"
+ "Telugu keyboard Inscript.")
+
+(if nil
+    (quail-define-package "kannada-inscript" "Kannada" "KndIS" t "Kannada keyboard Inscript"))
+(quail-define-inscript-package
+ indian-knd-base-table inscript-dev-keytable
+ "kannada-inscript" "Kannada" "KndIS"
+ "Kannada keyboard Inscript.")
+
+(if nil
+    (quail-define-package "malayalam-inscript" "Malayalam" "MlmIS" t "Malayalam keyboard Inscript"))
+(quail-define-inscript-package
+ indian-mlm-base-table inscript-dev-keytable
+ "malayalam-inscript" "Malayalam" "MlmIS"
+ "Malayalam keyboard Inscript.")
+
+(if nil
+    (quail-define-package "tamil-inscript" "Tamil" "TmlIS" t "Tamil keyboard Inscript"))
+(quail-define-inscript-package
+ indian-tml-base-table inscript-dev-keytable
+ "tamil-inscript" "Tamil" "TmlIS"
+ "Tamil keyboard Inscript.")
+
+;;; arch-tag: 9e5a621e-f7d5-4fce-9543-0a51b407c940
 ;;; indian.el ends here