Mercurial > emacs
comparison lisp/international/quail.el @ 19878:a69ae37e6932
(quail-update-translation): Fix previous change.
(quail-simple-translation-keymap, quail-conversion-keymap):
Make the default binding with define-key.
Handle meta-prefix-char the way isearch does.
(quail-translation-keymap): Likewise.
(quail-execute-non-quail-command): Handle the key sequence as the
same way as universal-argument-other-key.
(quail-make-guidance-frame): Don't dedicate the guidance buffer window.
(quail-show-guidance-buf): Likewise.
(quail-hide-guidance-buf): Delete code to turn off window dedication.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 11 Sep 1997 23:15:08 +0000 |
parents | 1c5164d81426 |
children | 3ff7106cf88f |
comparison
equal
deleted
inserted
replaced
19877:3b008d891adb | 19878:a69ae37e6932 |
---|---|
269 (or (assq 'quail-mode map) | 269 (or (assq 'quail-mode map) |
270 (set-default 'minor-mode-map-alist (cons 'quail-mode map))))) | 270 (set-default 'minor-mode-map-alist (cons 'quail-mode map))))) |
271 | 271 |
272 (defvar quail-translation-keymap | 272 (defvar quail-translation-keymap |
273 (let ((map (make-keymap)) | 273 (let ((map (make-keymap)) |
274 (i 0)) | 274 (i 32)) |
275 (while (< i ?\ ) | |
276 (define-key map (char-to-string i) 'quail-execute-non-quail-command) | |
277 (setq i (1+ i))) | |
278 (while (< i 127) | 275 (while (< i 127) |
279 (define-key map (char-to-string i) 'quail-self-insert-command) | 276 (define-key map (char-to-string i) 'quail-self-insert-command) |
280 (setq i (1+ i))) | 277 (setq i (1+ i))) |
281 (setq i 128) | 278 (setq i 128) |
282 (while (< i 256) | 279 (while (< i 256) |
294 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) | 291 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) |
295 (define-key map [?\C-\ ] 'quail-select-current) | 292 (define-key map [?\C-\ ] 'quail-select-current) |
296 (define-key map [tab] 'quail-completion) | 293 (define-key map [tab] 'quail-completion) |
297 (define-key map [delete] 'quail-delete-last-char) | 294 (define-key map [delete] 'quail-delete-last-char) |
298 (define-key map [backspace] 'quail-delete-last-char) | 295 (define-key map [backspace] 'quail-delete-last-char) |
296 (let ((meta-map (make-sparse-keymap))) | |
297 (define-key map (char-to-string meta-prefix-char) meta-map) | |
298 (define-key map [escape] meta-map)) | |
299 (define-key map (vector meta-prefix-char t) | |
300 'quail-execute-non-quail-command) | |
299 ;; At last, define default key binding. | 301 ;; At last, define default key binding. |
300 (append map '((t . quail-execute-non-quail-command)))) | 302 (define-key map [t] 'quail-execute-non-quail-command) |
303 map) | |
301 "Keymap used processing translation in complex Quail modes. | 304 "Keymap used processing translation in complex Quail modes. |
302 Only a few especially complex input methods use this map; | 305 Only a few especially complex input methods use this map; |
303 most use `quail-simple-translation-keymap' instead. | 306 most use `quail-simple-translation-keymap' instead. |
304 This map is activated while translation region is active.") | 307 This map is activated while translation region is active.") |
305 | 308 |
313 (define-key map (char-to-string i) 'quail-self-insert-command) | 316 (define-key map (char-to-string i) 'quail-self-insert-command) |
314 (setq i (1+ i))) | 317 (setq i (1+ i))) |
315 (define-key map "\177" 'quail-delete-last-char) | 318 (define-key map "\177" 'quail-delete-last-char) |
316 ;;; This interferes with handling of escape sequences on non-X terminals. | 319 ;;; This interferes with handling of escape sequences on non-X terminals. |
317 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) | 320 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) |
321 (let ((meta-map (make-sparse-keymap))) | |
322 (define-key map (char-to-string meta-prefix-char) meta-map) | |
323 (define-key map [escape] meta-map)) | |
324 (define-key map (vector meta-prefix-char t) | |
325 'quail-execute-non-quail-command) | |
318 ;; At last, define default key binding. | 326 ;; At last, define default key binding. |
319 (append map '((t . quail-execute-non-quail-command)))) | 327 (define-key map (vector meta-prefix-char t) |
328 'quail-execute-non-quail-command) | |
329 map) | |
320 "Keymap used while processing translation in simple Quail modes. | 330 "Keymap used while processing translation in simple Quail modes. |
321 A few especially complex input methods use `quail--translation-keymap' instead. | 331 A few especially complex input methods use `quail--translation-keymap' instead. |
322 This map is activated while translation region is active.") | 332 This map is activated while translation region is active.") |
323 | 333 |
324 (defvar quail-conversion-keymap | 334 (defvar quail-conversion-keymap |
344 ;;; This interferes with handling of escape sequences on non-X terminals. | 354 ;;; This interferes with handling of escape sequences on non-X terminals. |
345 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) | 355 ;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) |
346 (define-key map "\177" 'quail-conversion-backward-delete-char) | 356 (define-key map "\177" 'quail-conversion-backward-delete-char) |
347 (define-key map [delete] 'quail-conversion-backward-delete-char) | 357 (define-key map [delete] 'quail-conversion-backward-delete-char) |
348 (define-key map [backspace] 'quail-conversion-backward-delete-char) | 358 (define-key map [backspace] 'quail-conversion-backward-delete-char) |
359 (let ((meta-map (make-sparse-keymap))) | |
360 (define-key map (char-to-string meta-prefix-char) meta-map) | |
361 (define-key map [escape] meta-map)) | |
362 (define-key map (vector meta-prefix-char t) | |
363 'quail-execute-non-quail-command) | |
349 ;; At last, define default key binding. | 364 ;; At last, define default key binding. |
350 (append map '((t . quail-execute-non-quail-command)))) | 365 (define-key map [t] 'quail-execute-non-quail-command) |
366 map) | |
351 "Keymap used for processing conversion in Quail mode. | 367 "Keymap used for processing conversion in Quail mode. |
352 This map is activated while convesion region is active but translation | 368 This map is activated while convesion region is active but translation |
353 region is not active.") | 369 region is not active.") |
354 | 370 |
355 ;;;###autoload | 371 ;;;###autoload |
595 | 611 |
596 (defun quail-execute-non-quail-command () | 612 (defun quail-execute-non-quail-command () |
597 "Execute one non-Quail command out of Quail mode. | 613 "Execute one non-Quail command out of Quail mode. |
598 The current translation and conversion are terminated." | 614 The current translation and conversion are terminated." |
599 (interactive) | 615 (interactive) |
600 (setq unread-command-events (cons last-input-event unread-command-events)) | 616 (let* ((key (this-command-keys)) |
617 (keylist (listify-key-sequence key))) | |
618 (setq unread-command-events (append keylist unread-command-events))) | |
619 (reset-this-command-lengths) | |
601 (quail-terminate-translation) | 620 (quail-terminate-translation) |
602 (quail-delete-overlays) | 621 (quail-delete-overlays) |
603 (setq overriding-terminal-local-map nil) | 622 (setq overriding-terminal-local-map nil) |
604 (if (buffer-live-p quail-guidance-buf) | 623 (if (buffer-live-p quail-guidance-buf) |
605 (save-excursion | 624 (save-excursion |
1077 (insert (or quail-current-str | 1096 (insert (or quail-current-str |
1078 (substring quail-current-key 0 len))) | 1097 (substring quail-current-key 0 len))) |
1079 ;; Otherwise, in case the user is using a single-byte | 1098 ;; Otherwise, in case the user is using a single-byte |
1080 ;; extended-ASCII character set, | 1099 ;; extended-ASCII character set, |
1081 ;; try inserting the translated character. | 1100 ;; try inserting the translated character. |
1082 (let ((char (sref (or quail-current-str | 1101 (let ((char (or quail-current-str |
1083 (substring quail-current-key 0 len)) | 1102 (substring quail-current-key 0 len)))) |
1084 0))) | 1103 (if (stringp char) |
1104 (setq char (sref char 0))) | |
1085 (if (= (length (split-char char)) 2) | 1105 (if (= (length (split-char char)) 2) |
1086 (insert-char (logand char 127)) | 1106 (insert-char (logand char 255) 1) |
1087 (error "Cannot insert three-byte character in single-byte mode"))))) | 1107 (error "Three-byte characters require enabling multibyte characters"))))) |
1088 (insert (or quail-current-str quail-current-key))))) | 1108 (insert (or quail-current-str quail-current-key))))) |
1089 (quail-update-guidance) | 1109 (quail-update-guidance) |
1090 (if control-flag | 1110 (if control-flag |
1091 (quail-terminate-translation))) | 1111 (quail-terminate-translation))) |
1092 | 1112 |
1382 (let* ((frame (make-frame (append '((user-position . t) (height . 1) | 1402 (let* ((frame (make-frame (append '((user-position . t) (height . 1) |
1383 (minibuffer) (menu-bar-lines . 0)) | 1403 (minibuffer) (menu-bar-lines . 0)) |
1384 (cons (cons 'top newtop) fparam)))) | 1404 (cons (cons 'top newtop) fparam)))) |
1385 (win (frame-first-window frame))) | 1405 (win (frame-first-window frame))) |
1386 (set-window-buffer win buf) | 1406 (set-window-buffer win buf) |
1387 (set-window-dedicated-p win t)))) | 1407 ;;(set-window-dedicated-p win t) |
1408 ))) | |
1388 | 1409 |
1389 ;; Setup Quail completion buffer. | 1410 ;; Setup Quail completion buffer. |
1390 (defun quail-setup-completion-buf () | 1411 (defun quail-setup-completion-buf () |
1391 (unless (buffer-live-p quail-completion-buf) | 1412 (unless (buffer-live-p quail-completion-buf) |
1392 (setq quail-completion-buf (get-buffer-create "*Quail Completions*")) | 1413 (setq quail-completion-buf (get-buffer-create "*Quail Completions*")) |
1446 (let ((window-min-height 2)) | 1467 (let ((window-min-height 2)) |
1447 ;; Here, `split-window' returns a lower window | 1468 ;; Here, `split-window' returns a lower window |
1448 ;; which is what we wanted. | 1469 ;; which is what we wanted. |
1449 (setq win (split-window win (- height 2))))) | 1470 (setq win (split-window win (- height 2))))) |
1450 (set-window-buffer win quail-guidance-buf) | 1471 (set-window-buffer win quail-guidance-buf) |
1451 (set-window-dedicated-p win t))) | 1472 ;;(set-window-dedicated-p win t) |
1473 )) | |
1452 (set-window-buffer win quail-guidance-buf)) | 1474 (set-window-buffer win quail-guidance-buf)) |
1453 (setq quail-guidance-win win))) | 1475 (setq quail-guidance-win win))) |
1454 | 1476 |
1455 ;; And, create a buffer for completion. | 1477 ;; And, create a buffer for completion. |
1456 (quail-setup-completion-buf) | 1478 (quail-setup-completion-buf) |
1471 (if (eq win (frame-root-window (window-frame win))) | 1493 (if (eq win (frame-root-window (window-frame win))) |
1472 (progn | 1494 (progn |
1473 ;; We are using a separate frame for guidance buffer. | 1495 ;; We are using a separate frame for guidance buffer. |
1474 ;;(set-window-dedicated-p win nil) | 1496 ;;(set-window-dedicated-p win nil) |
1475 (delete-frame (window-frame win))) | 1497 (delete-frame (window-frame win))) |
1476 (set-window-dedicated-p win nil) | 1498 ;;(set-window-dedicated-p win nil) |
1477 (delete-window win))))))) | 1499 (delete-window win))))))) |
1478 | 1500 |
1479 (defun quail-update-guidance () | 1501 (defun quail-update-guidance () |
1480 "Update the Quail guidance buffer and completion buffer (if displayed now)." | 1502 "Update the Quail guidance buffer and completion buffer (if displayed now)." |
1481 ;; Update guidance buffer. | 1503 ;; Update guidance buffer. |