diff options
| author | Kenichi Handa | 1998-07-19 05:17:35 +0000 |
|---|---|---|
| committer | Kenichi Handa | 1998-07-19 05:17:35 +0000 |
| commit | b45d8d64b6e2f9025e214c7dbfd859867994a6ff (patch) | |
| tree | 95f964725c468616eae62be8489c186bab003262 | |
| parent | b2ba2dc0b5a6385d7fdcfe7cf299ddbb8a259018 (diff) | |
| download | emacs-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.el | 50 |
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 | ||