aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa1998-07-19 05:17:35 +0000
committerKenichi Handa1998-07-19 05:17:35 +0000
commitb45d8d64b6e2f9025e214c7dbfd859867994a6ff (patch)
tree95f964725c468616eae62be8489c186bab003262
parentb2ba2dc0b5a6385d7fdcfe7cf299ddbb8a259018 (diff)
downloademacs-b45d8d64b6e2f9025e214c7dbfd859867994a6ff.tar.gz
emacs-b45d8d64b6e2f9025e214c7dbfd859867994a6ff.zip
(quail-conversion-keymap): New binding
for quail-conversion-delete-tail. (quail-input-method): Suppress input method if overriding-terminal-local-map or overriding-local-map is non-nil. Erase contents of quail-guidance-buf. Run the hook input-method-after-insert-chunk-hook. (quail-start-translation): Get the original event list by listify-key-sequence. Setup last-command and this-command (quail-start-conversion): Likewise. (quail-conversion-beginning-of-region): Set quail-translating to nil. (quail-conversion-end-of-region, quail-conversion-delete-char): Likewise. (quail-conversion-delete-tail): New function. (quail-no-conversion): Don' run the hook input-method-after-insert-chunk-hook.
-rw-r--r--lisp/international/quail.el50
1 files changed, 38 insertions, 12 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index cd830cca8bc..d088ab94223 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -300,6 +300,7 @@ This map is activated while translation region is active.")
300 (define-key map "\C-a" 'quail-conversion-beginning-of-region) 300 (define-key map "\C-a" 'quail-conversion-beginning-of-region)
301 (define-key map "\C-e" 'quail-conversion-end-of-region) 301 (define-key map "\C-e" 'quail-conversion-end-of-region)
302 (define-key map "\C-d" 'quail-conversion-delete-char) 302 (define-key map "\C-d" 'quail-conversion-delete-char)
303 (define-key map "\C-k" 'quail-conversion-delete-tail)
303 (define-key map "\C-h" 'quail-conversion-help) 304 (define-key map "\C-h" 'quail-conversion-help)
304 (define-key map "\177" 'quail-conversion-backward-delete-char) 305 (define-key map "\177" 'quail-conversion-backward-delete-char)
305 (define-key map [delete] 'quail-conversion-backward-delete-char) 306 (define-key map [delete] 'quail-conversion-backward-delete-char)
@@ -855,9 +856,8 @@ The returned value is a Quail map specific to KEY."
855 856
856(defun quail-input-method (key) 857(defun quail-input-method (key)
857 (if (or buffer-read-only 858 (if (or buffer-read-only
858 (and (or overriding-terminal-local-map 859 overriding-terminal-local-map
859 overriding-local-map) 860 overriding-local-map)
860 (>= key ?0) (<= key ?9)))
861 (list key) 861 (list key)
862 (quail-setup-overlays (quail-conversion-keymap)) 862 (quail-setup-overlays (quail-conversion-keymap))
863 (let ((modified-p (buffer-modified-p))) 863 (let ((modified-p (buffer-modified-p)))
@@ -865,8 +865,17 @@ The returned value is a Quail map specific to KEY."
865 (if (quail-conversion-keymap) 865 (if (quail-conversion-keymap)
866 (quail-start-conversion key) 866 (quail-start-conversion key)
867 (quail-start-translation key)) 867 (quail-start-translation key))
868 (quail-delete-overlays)
869 (if (buffer-live-p quail-guidance-buf)
870 (save-excursion
871 (set-buffer quail-guidance-buf)
872 (erase-buffer)))
868 (set-buffer-modified-p modified-p) 873 (set-buffer-modified-p modified-p)
869 (quail-delete-overlays))))) 874 ;; Run this hook only when the current input method doesn't require
875 ;; conversion. When conversion is required, the conversion function
876 ;; should run this hook at a proper timing.
877 (unless (quail-conversion-keymap)
878 (run-hooks 'input-method-after-insert-chunk-hook))))))
870 879
871(defun quail-overlay-region-events (overlay) 880(defun quail-overlay-region-events (overlay)
872 (let ((start (overlay-start overlay)) 881 (let ((start (overlay-start overlay))
@@ -894,16 +903,19 @@ The returned value is a Quail map specific to KEY."
894 (while quail-translating 903 (while quail-translating
895 (let* ((echo-keystrokes 0) 904 (let* ((echo-keystrokes 0)
896 (keyseq (read-key-sequence nil)) 905 (keyseq (read-key-sequence nil))
897 (cmd (lookup-key translation-keymap keyseq t))) 906 (events (listify-key-sequence keyseq))
907 (cmd (lookup-key translation-keymap keyseq)))
898 (if (commandp cmd) 908 (if (commandp cmd)
899 (progn 909 (progn
900 (setq last-command-event (aref keyseq 0)) 910 (setq last-command-event (car (last events))
911 last-command this-command
912 this-command cmd)
901 (condition-case err 913 (condition-case err
902 (call-interactively cmd) 914 (call-interactively cmd)
903 (quail-error (message "%s" (cdr err)) (beep)))) 915 (quail-error (message "%s" (cdr err)) (beep))))
904 ;; KEYSEQ is not defined in the translation keymap. 916 ;; KEYSEQ is not defined in the translation keymap.
905 ;; Let's return the event(s) to the caller. 917 ;; Let's return the event(s) to the caller.
906 (setq generated-events (string-to-list keyseq) 918 (setq generated-events events
907 quail-translating nil)))) 919 quail-translating nil))))
908 (setq generated-events 920 (setq generated-events
909 (append (quail-overlay-region-events quail-overlay) 921 (append (quail-overlay-region-events quail-overlay)
@@ -938,16 +950,19 @@ The returned value is a Quail map specific to KEY."
938 (quail-setup-overlays nil))) 950 (quail-setup-overlays nil)))
939 (let* ((echo-keystrokes 0) 951 (let* ((echo-keystrokes 0)
940 (keyseq (read-key-sequence nil)) 952 (keyseq (read-key-sequence nil))
941 (cmd (lookup-key conversion-keymap keyseq t))) 953 (events (listify-key-sequence keyseq))
954 (cmd (lookup-key conversion-keymap keyseq)))
942 (if (commandp cmd) 955 (if (commandp cmd)
943 (progn 956 (progn
944 (setq last-command-event (aref keyseq 0)) 957 (setq last-command-event (car (last events))
958 last-command this-command
959 this-command cmd)
945 (condition-case err 960 (condition-case err
946 (call-interactively cmd) 961 (call-interactively cmd)
947 (quail-error (message "%s" (cdr err)) (beep)))) 962 (quail-error (message "%s" (cdr err)) (beep))))
948 ;; KEYSEQ is not defined in the conversion keymap. 963 ;; KEYSEQ is not defined in the conversion keymap.
949 ;; Let's return the event(s) to the caller. 964 ;; Let's return the event(s) to the caller.
950 (setq generated-events (string-to-list keyseq) 965 (setq generated-events events
951 quail-converting nil)))) 966 quail-converting nil))))
952 (setq generated-events 967 (setq generated-events
953 (append (quail-overlay-region-events quail-conv-overlay) 968 (append (quail-overlay-region-events quail-conv-overlay)
@@ -1265,14 +1280,17 @@ sequence counting from the head."
1265 1280
1266(defun quail-conversion-beginning-of-region () 1281(defun quail-conversion-beginning-of-region ()
1267 (interactive) 1282 (interactive)
1283 (setq quail-translating nil)
1268 (goto-char (overlay-start quail-conv-overlay))) 1284 (goto-char (overlay-start quail-conv-overlay)))
1269 1285
1270(defun quail-conversion-end-of-region () 1286(defun quail-conversion-end-of-region ()
1271 (interactive) 1287 (interactive)
1288 (setq quail-translating nil)
1272 (goto-char (overlay-end quail-conv-overlay))) 1289 (goto-char (overlay-end quail-conv-overlay)))
1273 1290
1274(defun quail-conversion-delete-char () 1291(defun quail-conversion-delete-char ()
1275 (interactive) 1292 (interactive)
1293 (setq quail-translating nil)
1276 (if (>= (point) (overlay-end quail-conv-overlay)) 1294 (if (>= (point) (overlay-end quail-conv-overlay))
1277 (quail-error "End of conversion region")) 1295 (quail-error "End of conversion region"))
1278 (delete-char 1) 1296 (delete-char 1)
@@ -1280,6 +1298,15 @@ sequence counting from the head."
1280 (overlay-end quail-conv-overlay)) 1298 (overlay-end quail-conv-overlay))
1281 (setq quail-converting nil))) 1299 (setq quail-converting nil)))
1282 1300
1301(defun quail-conversion-delete-tail ()
1302 (interactive)
1303 (if (>= (point) (overlay-end quail-conv-overlay))
1304 (quail-error "End of conversion region"))
1305 (delete-region (point) (overlay-end quail-conv-overlay))
1306 (if (= (overlay-start quail-conv-overlay)
1307 (overlay-end quail-conv-overlay))
1308 (setq quail-converting nil)))
1309
1283(defun quail-conversion-backward-delete-char () 1310(defun quail-conversion-backward-delete-char ()
1284 (interactive) 1311 (interactive)
1285 (if (<= (point) (overlay-start quail-conv-overlay)) 1312 (if (<= (point) (overlay-start quail-conv-overlay))
@@ -1298,8 +1325,7 @@ Remaining args are for FUNC."
1298(defun quail-no-conversion () 1325(defun quail-no-conversion ()
1299 "Do no conversion of the current conversion region of Quail." 1326 "Do no conversion of the current conversion region of Quail."
1300 (interactive) 1327 (interactive)
1301 (setq quail-converting nil) 1328 (setq quail-converting nil))
1302 (run-hooks 'input-method-after-insert-chunk-hook))
1303 1329
1304;; Guidance, Completion, and Help buffer handlers. 1330;; Guidance, Completion, and Help buffer handlers.
1305 1331