summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1997-09-04 04:47:34 +0000
committerRichard M. Stallman <rms@gnu.org>1997-09-04 04:47:34 +0000
commitf009b1905be26fde1c71f8b46c15ac27f275592e (patch)
treeb1d1324b5c88c8509970260491424d8fd56ac19c /lisp
parent218194da8f6b3fa6849a7f5741b1005a2cf87073 (diff)
downloademacs-f009b1905be26fde1c71f8b46c15ac27f275592e.tar.gz
(quail-update-translation):
Do insert translated char when enable-multibyte-characters is nil.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/international/quail.el17
1 files changed, 15 insertions, 2 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index df5f009988d..77e69b04d6a 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1062,8 +1062,21 @@ The returned value is a Quail map specific to KEY."
(setq unread-command-events
(cons (aref quail-current-key len)
unread-command-events)))
- (insert (or quail-current-str
- (substring quail-current-key 0 len))))
+ ;; Insert the translated sequence.
+ ;; It is a string containing multibyte characters.
+ ;; If enable-multibyte-characters, just insert it.
+ (if enable-multibyte-characters
+ (insert (or quail-current-str
+ (substring quail-current-key 0 len)))
+ ;; Otherwise, in case the user is using a single-byte
+ ;; extended-ASCII character set,
+ ;; try inserting the translated character.
+ (let ((char (sref (or quail-current-str
+ (substring quail-current-key 0 len))
+ 0)))
+ (if (= (length (split-char char)) 2)
+ (insert-char (logand char 127))
+ (error "Cannot insert three-byte character in single-byte mode")))))
(insert (or quail-current-str quail-current-key)))))
(quail-update-guidance)
(if control-flag