comparison leim/quail/indian.el @ 52083:f57cb35e417f

(quail-indian-update-translation): Adjusted the behaviour according to the change of quail-translate-key.
author Kenichi Handa <handa@m17n.org>
date Wed, 30 Jul 2003 06:35:51 +0000
parents 9155d2fdd73c
children 695cf19ef79e
comparison
equal deleted inserted replaced
52082:b49a4e999509 52083:f57cb35e417f
46 nil))) 46 nil)))
47 47
48 (defvar quail-indian-update-preceding-char nil) 48 (defvar quail-indian-update-preceding-char nil)
49 (make-variable-frame-local 'quail-indian-update-preceding-char) 49 (make-variable-frame-local 'quail-indian-update-preceding-char)
50 50
51 ;;; update function 51 ;; Input value ::
52 52 ;; CONTROL-FLAG is integer `n'
53 ;; CONTROL-FLAG is integer (n)
54 ;; quail-current-key :: keyboard input. 53 ;; quail-current-key :: keyboard input.
55 ;; Only first n can be translated. 54 ;; Only first `n' can be translated.
56 ;; quail-current-string :: corresonding string. Translated when last 55 ;; quail-current-str :: corresonding string.
57 ;; time CONTROL-FLAG is nil. 56 ;; jobs :: (1) put last (len-n) char to unrread-command-event.
58 ;; todo :: (1) put last (len-n) char to unrread-command-event. 57 ;; (2) put translated string to quail-current-str.
59 ;; (2) put translated string to quail-current-string.
60 ;; 58 ;;
61 ;; CONTROL-FLAG is t (terminate) or nil (proceed the translation) 59 ;; CONTROL-FLAG is t (terminate) or nil (proceed the translation)
62 ;; quail-current-key :: keyboard input. 60 ;; quail-current-key :: keyboard input.
63 ;; quail-current-string :: corresponding string. Created by database. 61 ;; quail-current-str :: corresponding string.
64 ;; todo :: (1) put modified translated string to quail-current-string. 62 ;; jobs :: (1) put modified translated string to quail-current-str.
63 ;;
64 ;; When non-nil value is returned from quail-translation-update-function,
65 ;; the quail-current-str is split to characters and put into event queue,
66 ;; with `compose-last-char' event with composition info at the end.
65 67
66 (defun quail-indian-update-translation (control-flag) 68 (defun quail-indian-update-translation (control-flag)
67 ;;(message "input control-flag=%s, string=%s, key=%s"
68 ;; control-flag quail-current-str quail-current-key)
69 ;; make quail-current-str string when possible. 69 ;; make quail-current-str string when possible.
70 (if (char-valid-p quail-current-str) 70 (if (char-valid-p quail-current-str)
71 (setq quail-current-str (char-to-string quail-current-str))) 71 (setq quail-current-str (char-to-string quail-current-str)))
72 ;(message "\n input control-flag=%s, str=%s, key=%s q-ind-upd-prec-char=%s"
73 ; control-flag quail-current-str quail-current-key
74 ; quail-indian-update-preceding-char)
72 ;; reset quail-indian-update-preceding-char if it's initial. 75 ;; reset quail-indian-update-preceding-char if it's initial.
73 (if (= (overlay-start quail-overlay) (overlay-end quail-overlay)) 76 (if (= (overlay-start quail-overlay) (overlay-end quail-overlay))
74 (setq quail-indian-update-preceding-char nil)) 77 (setq quail-indian-update-preceding-char nil))
75 ;; set quial-indian-update-preceding-char if appropriate. 78 ;; Check the preceding character of the quail region. If the
79 ;; preceding character can be composed with quail-current-str, then
80 ;; grab that preceding character into the quail-current-str and
81 ;; remove that char from the region.
76 (let* (prec-char-position composition-regexp 82 (let* (prec-char-position composition-regexp
77 prec-char-str candidate-str match-pos match-end) 83 prec-char-str candidate-str match-pos match-end)
78 (when (and quail-current-str 84 (when (and quail-current-str
85 (null quail-indian-update-preceding-char)
79 (null input-method-use-echo-area) 86 (null input-method-use-echo-area)
80 (null input-method-exit-on-first-char) 87 (null input-method-exit-on-first-char)
81 (setq prec-char-position 88 (setq prec-char-position
82 (quail-indian-preceding-char-position 89 (quail-indian-preceding-char-position
83 (overlay-start quail-overlay))) 90 (overlay-start quail-overlay)))
84 (setq composition-regexp 91 (setq composition-regexp
85 (if prec-char-position 92 (if prec-char-position
86 (caar (elt composition-function-table 93 (caar (elt composition-function-table
87 (char-after prec-char-position))))) 94 (char-after prec-char-position)))))
88 ;; (null quail-indian-update-preceding-char)
89 (setq prec-char-str 95 (setq prec-char-str
90 (buffer-substring prec-char-position 96 (buffer-substring prec-char-position
91 (overlay-start quail-overlay)) 97 (overlay-start quail-overlay))
92 candidate-str (concat prec-char-str quail-current-str) 98 candidate-str (concat prec-char-str quail-current-str)
93 match-pos (string-match composition-regexp candidate-str) 99 match-pos (string-match composition-regexp candidate-str)
94 match-end (match-end 0)) 100 match-end (match-end 0))
95 (> match-end (length prec-char-str))) 101 (> match-end (length prec-char-str)))
96 (setq quail-indian-update-preceding-char prec-char-str) 102 (setq quail-indian-update-preceding-char prec-char-str)
97 (delete-region prec-char-position 103 (delete-region prec-char-position
98 (overlay-start quail-overlay)))) 104 (overlay-start quail-overlay))))
99 ;; make quail-current-str string when possible. 105 (setq quail-current-str
100 (if (null quail-current-str) 106 (indian-compose-string
101 (setq quail-current-str "")) 107 (concat quail-indian-update-preceding-char
102 ;; set quail-current-str unless control-flag is number. 108 quail-current-str)))
103 (if (numberp control-flag) 109 (if (numberp control-flag)
104 (setq quail-indian-update-preceding-char nil 110 (setq unread-command-events
105 quail-current-str
106 (if (equal quail-current-str "")
107 (substring quail-current-key 0 control-flag)
108 (indian-compose-string quail-current-str))
109 unread-command-events
110 (string-to-list 111 (string-to-list
111 (substring quail-current-key control-flag))) 112 (substring quail-current-key control-flag))))
112 (if quail-indian-update-preceding-char 113 (when control-flag
113 (setq quail-current-str
114 (concat quail-indian-update-preceding-char
115 quail-current-str)))
116 (setq quail-current-str
117 (indian-compose-string quail-current-str)))
118 (when (eq t control-flag)
119 ;; reset preceding-char if translation is terminated.
120 (setq quail-indian-update-preceding-char nil)) 114 (setq quail-indian-update-preceding-char nil))
121 ;; compose to previous char if it looks possible. 115 ;(message "output control-flag=%s, str=%s, key=%s q-ind-upd-prec-char=%s"
122 ;;(message " out control-flag=%s, string=%s, key=%s" 116 ; control-flag quail-current-str quail-current-key
123 ;; control-flag quail-current-str quail-current-key) 117 ; quail-indian-update-preceding-char)
124 control-flag) 118 control-flag)
125 119
126 ;;; 120 ;;;
127 ;;; Input by transliteration 121 ;;; Input by transliteration
128 ;;; 122 ;;;