/[emacs]/emacs/leim/quail/indian.el
ViewVC logotype

Diff of /emacs/leim/quail/indian.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by handa, Wed Jul 30 06:35:51 2003 UTC revision 1.7.2.1 by handa, Mon Sep 8 12:45:39 2003 UTC
# Line 33  Line 33 
33  ;;; Code:  ;;; Code:
34    
35  (require 'quail)  (require 'quail)
 (require 'devan-util)  
36  (require 'ind-util)  (require 'ind-util)
37    (require 'devan-util)
 (defun quail-indian-preceding-char-position (position)  
   "Return the position of preceding composite character."  
   (let (prec-composed)  
     (if (char-valid-p (char-before position)) ;; range o.k.  
         (if (setq prec-composed (find-composition (1- position)))  
             (car prec-composed)  
           (1- position))  
       nil)))  
   
 (defvar quail-indian-update-preceding-char nil)  
 (make-variable-frame-local 'quail-indian-update-preceding-char)  
   
 ;; Input value ::  
 ;;   CONTROL-FLAG is integer `n'  
 ;;     quail-current-key :: keyboard input.  
 ;;                          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)  
 ;;     quail-current-key :: keyboard input.  
 ;;     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)  
   ;; 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))  
   ;; 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  
                      (quail-indian-preceding-char-position  
                       (overlay-start quail-overlay)))  
                (setq composition-regexp  
                      (if prec-char-position  
                          (caar (elt composition-function-table  
                                     (char-after prec-char-position)))))  
                (setq prec-char-str  
                      (buffer-substring prec-char-position  
                                        (overlay-start quail-overlay))  
                      candidate-str (concat prec-char-str quail-current-str)  
                      match-pos (string-match composition-regexp candidate-str)  
                      match-end (match-end 0))  
                (> match-end (length prec-char-str)))  
       (setq quail-indian-update-preceding-char prec-char-str)  
       (delete-region prec-char-position  
                      (overlay-start quail-overlay))))  
   (setq quail-current-str  
         (indian-compose-string  
          (concat quail-indian-update-preceding-char  
                  quail-current-str)))  
   (if (numberp control-flag)  
       (setq unread-command-events  
             (string-to-list  
              (substring quail-current-key control-flag))))  
   (when control-flag  
     (setq quail-indian-update-preceding-char nil))  
   ;(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)  
38    
39  ;;;  ;;;
40  ;;; Input by transliteration  ;;; Input by transliteration
# Line 124  Line 43 
43  (defun quail-define-indian-trans-package (hashtbls pkgname  (defun quail-define-indian-trans-package (hashtbls pkgname
44                                                     lang title doc)                                                     lang title doc)
45    (funcall 'quail-define-package pkgname lang title t doc    (funcall 'quail-define-package pkgname lang title t doc
46             nil nil nil nil nil nil t nil             nil nil nil nil nil nil t nil)
            'quail-indian-update-translation)  
47    (maphash    (maphash
48     (lambda (key val)     (lambda (key val)
49       (quail-defrule key (if (= (length val) 1)       (quail-defrule key (if (= (length val) 1)
# Line 225  Line 143 
143    (setq char-table (quail-indian-flatten-list char-table))    (setq char-table (quail-indian-flatten-list char-table))
144    (setq key-table (quail-indian-flatten-list key-table))    (setq key-table (quail-indian-flatten-list key-table))
145    (funcall 'quail-define-package pkgname lang title nil docstring    (funcall 'quail-define-package pkgname lang title nil docstring
146             nil nil nil nil nil nil nil nil             nil nil nil nil nil nil nil nil)
            'quail-indian-update-translation)  
147    (dolist (key key-table)    (dolist (key key-table)
148      (let ((val (pop char-table)))      (let ((val (pop char-table)))
149        (if (and key val)        (if (and key val)
150            (quail-defrule            (quail-defrule
151              (if (char-valid-p key) (char-to-string key) key)              (if (characterp key) (char-to-string key) key)
152              (if (stringp val) (vector val) val))))))              (if (stringp val) (vector val) val))))))
153    
154  ;;  ;;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.7.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26