1267 |
|
|
1268 |
(defun quail-input-string-to-events (str) |
(defun quail-input-string-to-events (str) |
1269 |
"Convert input string STR to a list of events. |
"Convert input string STR to a list of events. |
1270 |
Do so while interleaving with the following special events: |
If STR has `advice' text property, append the following special event: |
1271 |
\(compose-last-chars LEN COMPONENTS) |
\(quail-advice STR)" |
1272 |
\(quail-advice INPUT-STRING)" |
(let ((events (mapcar |
1273 |
(let* ((events (mapcar |
(lambda (c) |
1274 |
(lambda (c) |
;; This gives us the chance to unify on input |
1275 |
;; This gives us the chance to unify on input |
;; (e.g. using ucs-tables.el). |
1276 |
;; (e.g. using ucs-tables.el). |
(or (and translation-table-for-input |
1277 |
;; Fixme: Is this still useful? (See also mule-conf.el.) |
(aref translation-table-for-input c)) |
1278 |
(or (and translation-table-for-input |
c)) |
1279 |
(aref translation-table-for-input c)) |
str))) |
|
c)) |
|
|
str)) |
|
|
(len (length str)) |
|
|
(idx len) |
|
|
composition from to) |
|
|
(while (and (> idx 0) |
|
|
(setq composition (find-composition idx 0 str t))) |
|
|
(setq from (car composition) to (nth 1 composition)) |
|
|
(setcdr (nthcdr (1- to) events) |
|
|
(cons (list 'compose-last-chars (- to from) |
|
|
(and (not (nth 3 composition)) (nth 2 composition))) |
|
|
(nthcdr to events))) |
|
|
(setq idx (1- from))) |
|
1280 |
(if (or (get-text-property 0 'advice str) |
(if (or (get-text-property 0 'advice str) |
1281 |
(next-single-property-change 0 'advice str)) |
(next-single-property-change 0 'advice str)) |
1282 |
(setq events |
(setq events |