Mercurial > emacs
comparison lisp/international/quail.el @ 40667:589781f0ee38
(quail-help): Use `help-buffer' and move `help-setup-xref' to beginning.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 03 Nov 2001 00:37:56 +0000 |
parents | b73fe7fe3c9f |
children | 90c5fdb81e29 |
comparison
equal
deleted
inserted
replaced
40666:84cd0f5441e2 | 40667:589781f0ee38 |
---|---|
882 (setq keyboard-type quail-keyboard-layout-type)) | 882 (setq keyboard-type quail-keyboard-layout-type)) |
883 (let ((layout (assoc keyboard-type quail-keyboard-layout-alist))) | 883 (let ((layout (assoc keyboard-type quail-keyboard-layout-alist))) |
884 (or layout | 884 (or layout |
885 (error "Unknown keyboard type: %s" keyboard-type)) | 885 (error "Unknown keyboard type: %s" keyboard-type)) |
886 (with-output-to-temp-buffer "*Help*" | 886 (with-output-to-temp-buffer "*Help*" |
887 (save-excursion | 887 (with-current-buffer standard-output |
888 (set-buffer standard-output) | |
889 (insert "Keyboard layout (keyboard type: " | 888 (insert "Keyboard layout (keyboard type: " |
890 keyboard-type | 889 keyboard-type |
891 ")\n") | 890 ")\n") |
892 (quail-insert-kbd-layout (cdr layout)))))) | 891 (quail-insert-kbd-layout (cdr layout)))))) |
893 | 892 |
1297 (if input-method-exit-on-first-char | 1296 (if input-method-exit-on-first-char |
1298 (list (aref input-string 0)) | 1297 (list (aref input-string 0)) |
1299 (quail-input-string-to-events input-string)))) | 1298 (quail-input-string-to-events input-string)))) |
1300 (quail-delete-overlays) | 1299 (quail-delete-overlays) |
1301 (if (buffer-live-p quail-guidance-buf) | 1300 (if (buffer-live-p quail-guidance-buf) |
1302 (save-excursion | 1301 (with-current-buffer quail-guidance-buf |
1303 (set-buffer quail-guidance-buf) | |
1304 (erase-buffer))) | 1302 (erase-buffer))) |
1305 (quail-hide-guidance-buf) | 1303 (quail-hide-guidance-buf) |
1306 (set-buffer-modified-p modified-p) | 1304 (set-buffer-modified-p modified-p) |
1307 ;; Run this hook only when the current input method doesn't require | 1305 ;; Run this hook only when the current input method doesn't require |
1308 ;; conversion. When conversion is required, the conversion function | 1306 ;; conversion. When conversion is required, the conversion function |
1458 | 1456 |
1459 (defun quail-terminate-translation () | 1457 (defun quail-terminate-translation () |
1460 "Terminate the translation of the current key." | 1458 "Terminate the translation of the current key." |
1461 (setq quail-translating nil) | 1459 (setq quail-translating nil) |
1462 (if (buffer-live-p quail-guidance-buf) | 1460 (if (buffer-live-p quail-guidance-buf) |
1463 (save-excursion | 1461 (with-current-buffer quail-guidance-buf |
1464 (set-buffer quail-guidance-buf) | |
1465 (erase-buffer)))) | 1462 (erase-buffer)))) |
1466 | 1463 |
1467 (defun quail-select-current () | 1464 (defun quail-select-current () |
1468 "Accept the currently selected translation." | 1465 "Accept the currently selected translation." |
1469 (interactive) | 1466 (interactive) |
1852 (defun quail-setup-completion-buf () | 1849 (defun quail-setup-completion-buf () |
1853 "Setup Quail completion buffer." | 1850 "Setup Quail completion buffer." |
1854 (unless (buffer-live-p quail-completion-buf) | 1851 (unless (buffer-live-p quail-completion-buf) |
1855 (let ((default-enable-multibyte-characters enable-multibyte-characters)) | 1852 (let ((default-enable-multibyte-characters enable-multibyte-characters)) |
1856 (setq quail-completion-buf (get-buffer-create "*Quail Completions*"))) | 1853 (setq quail-completion-buf (get-buffer-create "*Quail Completions*"))) |
1857 (save-excursion | 1854 (with-current-buffer quail-completion-buf |
1858 (set-buffer quail-completion-buf) | |
1859 (setq quail-overlay (make-overlay 1 1)) | 1855 (setq quail-overlay (make-overlay 1 1)) |
1860 (overlay-put quail-overlay 'face 'highlight)))) | 1856 (overlay-put quail-overlay 'face 'highlight)))) |
1861 | 1857 |
1862 (defun quail-require-guidance-buf () | 1858 (defun quail-require-guidance-buf () |
1863 "Return t iff the current Quail package requires showing guidance buffer." | 1859 "Return t iff the current Quail package requires showing guidance buffer." |
1881 (let ((default-enable-multibyte-characters enable-multibyte-characters)) | 1877 (let ((default-enable-multibyte-characters enable-multibyte-characters)) |
1882 (or (buffer-live-p quail-guidance-buf) | 1878 (or (buffer-live-p quail-guidance-buf) |
1883 (setq quail-guidance-buf (generate-new-buffer " *Quail-guidance*")))) | 1879 (setq quail-guidance-buf (generate-new-buffer " *Quail-guidance*")))) |
1884 (let ((name (quail-name)) | 1880 (let ((name (quail-name)) |
1885 (title (quail-title))) | 1881 (title (quail-title))) |
1886 (save-excursion | 1882 (with-current-buffer quail-guidance-buf |
1887 (set-buffer quail-guidance-buf) | |
1888 ;; To show the title of Quail package. | 1883 ;; To show the title of Quail package. |
1889 (setq current-input-method name | 1884 (setq current-input-method name |
1890 current-input-method-title title) | 1885 current-input-method-title title) |
1891 (erase-buffer) | 1886 (erase-buffer) |
1892 (or (overlayp quail-overlay) | 1887 (or (overlayp quail-overlay) |
1924 (when (>= height 4) | 1919 (when (>= height 4) |
1925 ;; Here, `split-window' returns a lower window | 1920 ;; Here, `split-window' returns a lower window |
1926 ;; which is what we wanted. | 1921 ;; which is what we wanted. |
1927 (setq win (split-window win (- height 2)))) | 1922 (setq win (split-window win (- height 2)))) |
1928 (set-window-buffer win quail-guidance-buf) | 1923 (set-window-buffer win quail-guidance-buf) |
1929 (save-excursion | 1924 (with-current-buffer quail-guidance-buf |
1930 (set-buffer quail-guidance-buf) | |
1931 (fit-window-to-buffer win nil (window-height win))))) | 1925 (fit-window-to-buffer win nil (window-height win))))) |
1932 (set-window-buffer win quail-guidance-buf) | 1926 (set-window-buffer win quail-guidance-buf) |
1933 (set-minibuffer-window win)) | 1927 (set-minibuffer-window win)) |
1934 (setq quail-guidance-win win))) | 1928 (setq quail-guidance-win win))) |
1935 | 1929 |
1974 ((null guidance) | 1968 ((null guidance) |
1975 ;; Show the current input keys. | 1969 ;; Show the current input keys. |
1976 (let ((key quail-current-key)) | 1970 (let ((key quail-current-key)) |
1977 (if (quail-kbd-translate) | 1971 (if (quail-kbd-translate) |
1978 (setq key (quail-keyseq-translate key))) | 1972 (setq key (quail-keyseq-translate key))) |
1979 (save-excursion | 1973 (with-current-buffer quail-guidance-buf |
1980 (set-buffer quail-guidance-buf) | |
1981 (erase-buffer) | 1974 (erase-buffer) |
1982 (insert key))))) | 1975 (insert key))))) |
1983 ;; Make sure the height of the guidance window is OK -- | 1976 ;; Make sure the height of the guidance window is OK -- |
1984 ;; sometimes, if the minibuffer window expands due to user | 1977 ;; sometimes, if the minibuffer window expands due to user |
1985 ;; input (for instance if the newly inserted character is in a | 1978 ;; input (for instance if the newly inserted character is in a |
2028 (let* ((key quail-current-key) | 2021 (let* ((key quail-current-key) |
2029 (map (quail-lookup-key quail-current-key)) | 2022 (map (quail-lookup-key quail-current-key)) |
2030 (current-translations quail-current-translations)) | 2023 (current-translations quail-current-translations)) |
2031 (if quail-current-translations | 2024 (if quail-current-translations |
2032 (quail-update-current-translations)) | 2025 (quail-update-current-translations)) |
2033 (save-excursion | 2026 (with-current-buffer quail-guidance-buf |
2034 (set-buffer quail-guidance-buf) | |
2035 (erase-buffer) | 2027 (erase-buffer) |
2036 | 2028 |
2037 ;; Show the current key. | 2029 ;; Show the current key. |
2038 (let ((guidance (quail-guidance))) | 2030 (let ((guidance (quail-guidance))) |
2039 (if (listp guidance) | 2031 (if (listp guidance) |
2093 (quail-setup-completion-buf) | 2085 (quail-setup-completion-buf) |
2094 (let ((win (get-buffer-window quail-completion-buf 'visible)) | 2086 (let ((win (get-buffer-window quail-completion-buf 'visible)) |
2095 (key quail-current-key) | 2087 (key quail-current-key) |
2096 (map (quail-lookup-key quail-current-key)) | 2088 (map (quail-lookup-key quail-current-key)) |
2097 (require-update nil)) | 2089 (require-update nil)) |
2098 (save-excursion | 2090 (with-current-buffer quail-completion-buf |
2099 (set-buffer quail-completion-buf) | |
2100 (if (and win | 2091 (if (and win |
2101 (equal key quail-current-key) | 2092 (equal key quail-current-key) |
2102 (eq last-command 'quail-completion)) | 2093 (eq last-command 'quail-completion)) |
2103 ;; The window for Quail completion buffer has already been | 2094 ;; The window for Quail completion buffer has already been |
2104 ;; shown. We just scroll it appropriately. | 2095 ;; shown. We just scroll it appropriately. |
2193 ;; Give temporary modes such as isearch a chance to turn off. | 2184 ;; Give temporary modes such as isearch a chance to turn off. |
2194 (run-hooks 'mouse-leave-buffer-hook) | 2185 (run-hooks 'mouse-leave-buffer-hook) |
2195 (let ((buffer (window-buffer)) | 2186 (let ((buffer (window-buffer)) |
2196 choice | 2187 choice |
2197 base-size) | 2188 base-size) |
2198 (save-excursion | 2189 (with-current-buffer (window-buffer (posn-window (event-start event))) |
2199 (set-buffer (window-buffer (posn-window (event-start event)))) | |
2200 (if completion-reference-buffer | 2190 (if completion-reference-buffer |
2201 (setq buffer completion-reference-buffer)) | 2191 (setq buffer completion-reference-buffer)) |
2202 (setq base-size completion-base-size) | 2192 (setq base-size completion-base-size) |
2203 (save-excursion | 2193 (save-excursion |
2204 (goto-char (posn-point (event-start event))) | 2194 (goto-char (posn-point (event-start event))) |
2405 (insert ?\n)) | 2395 (insert ?\n)) |
2406 (insert ?\n)))) | 2396 (insert ?\n)))) |
2407 | 2397 |
2408 (defun quail-help (&optional package) | 2398 (defun quail-help (&optional package) |
2409 "Show brief description of the current Quail package. | 2399 "Show brief description of the current Quail package. |
2410 Optional 2nd arg PACKAGE specifies the name of alternative Quail | 2400 Optional arg PACKAGE specifies the name of alternative Quail |
2411 package to describe." | 2401 package to describe." |
2412 (interactive) | 2402 (interactive) |
2413 (if package | 2403 (if package |
2414 (setq package (assoc package quail-package-alist)) | 2404 (setq package (assoc package quail-package-alist)) |
2415 (setq package quail-current-package)) | 2405 (setq package quail-current-package)) |
2416 (let ((help-xref-mule-regexp help-xref-mule-regexp-template) | 2406 (let ((help-xref-mule-regexp help-xref-mule-regexp-template) |
2417 (default-enable-multibyte-characters enable-multibyte-characters)) | 2407 (default-enable-multibyte-characters enable-multibyte-characters)) |
2418 ;; At first, make sure that the help buffer has window. | 2408 ;; At first, make sure that the help buffer has window. |
2419 (with-output-to-temp-buffer "*Help*" | 2409 (help-setup-xref (list #'quail-help package) (interactive-p)) |
2420 (save-excursion | 2410 (with-output-to-temp-buffer (help-buffer) |
2421 (set-buffer standard-output) | 2411 (with-current-buffer standard-output |
2422 (setq quail-current-package package))) | 2412 (setq quail-current-package package))) |
2423 ;; Then, insert text in the help buffer while paying attention to | 2413 ;; Then, insert text in the help buffer while paying attention to |
2424 ;; the width of the frame in which the buffer displayed. | 2414 ;; the width of the frame in which the buffer displayed. |
2425 (save-excursion | 2415 (with-current-buffer (help-buffer) |
2426 (set-buffer (get-buffer "*Help*")) | |
2427 (setq buffer-read-only nil) | 2416 (setq buffer-read-only nil) |
2428 (insert "Input method: " (quail-name) | 2417 (insert "Input method: " (quail-name) |
2429 " (mode line indicator:" | 2418 " (mode line indicator:" |
2430 (quail-title) | 2419 (quail-title) |
2431 ")\n\n") | 2420 ")\n\n") |
2509 (quail-help-insert-keymap-description | 2498 (quail-help-insert-keymap-description |
2510 (quail-conversion-keymap) | 2499 (quail-conversion-keymap) |
2511 "\ | 2500 "\ |
2512 KEY BINDINGS FOR CONVERSION | 2501 KEY BINDINGS FOR CONVERSION |
2513 ---------------------------\n")) | 2502 ---------------------------\n")) |
2514 (help-setup-xref (list #'quail-help (quail-name)) | |
2515 (interactive-p)) | |
2516 (setq quail-current-package nil) | 2503 (setq quail-current-package nil) |
2517 ;; Resize the help window again, now that it has all its contents. | 2504 ;; Resize the help window again, now that it has all its contents. |
2518 (save-selected-window | 2505 (save-selected-window |
2519 (select-window (get-buffer-window (current-buffer))) | 2506 (select-window (get-buffer-window (current-buffer))) |
2520 (run-hooks 'temp-buffer-show-hook))))) | 2507 (run-hooks 'temp-buffer-show-hook))))) |
2562 (setq state-msg | 2549 (setq state-msg |
2563 (format "Translating key sequence %S by input method %S.\n" | 2550 (format "Translating key sequence %S by input method %S.\n" |
2564 quail-current-key (quail-name)) | 2551 quail-current-key (quail-name)) |
2565 keymap (quail-translation-keymap))) | 2552 keymap (quail-translation-keymap))) |
2566 (with-output-to-temp-buffer "*Help*" | 2553 (with-output-to-temp-buffer "*Help*" |
2567 (save-excursion | 2554 (with-current-buffer standard-output |
2568 (set-buffer standard-output) | |
2569 (insert state-msg) | 2555 (insert state-msg) |
2570 (quail-help-insert-keymap-description | 2556 (quail-help-insert-keymap-description |
2571 keymap | 2557 keymap |
2572 "-----------------------\n") | 2558 "-----------------------\n") |
2559 ;; Isn't this redundant ? -stef | |
2573 (help-mode))))) | 2560 (help-mode))))) |
2574 (let (scroll-help) | 2561 (let (scroll-help) |
2575 (save-selected-window | 2562 (save-selected-window |
2576 (select-window (get-buffer-window "*Help*")) | 2563 (select-window (get-buffer-window "*Help*")) |
2577 (if (eq this-command last-command) | 2564 (if (eq this-command last-command) |
2734 (error "Can't write to file \"%s\"" leim-list)) | 2721 (error "Can't write to file \"%s\"" leim-list)) |
2735 (message "Updating %s ..." leim-list) | 2722 (message "Updating %s ..." leim-list) |
2736 (setq list-buf (find-file-noselect leim-list)) | 2723 (setq list-buf (find-file-noselect leim-list)) |
2737 | 2724 |
2738 ;; At first, clean up the file. | 2725 ;; At first, clean up the file. |
2739 (save-excursion | 2726 (with-current-buffer list-buf |
2740 (set-buffer list-buf) | |
2741 (goto-char 1) | 2727 (goto-char 1) |
2742 | 2728 |
2743 ;; Insert the correct header. | 2729 ;; Insert the correct header. |
2744 (if (looking-at (regexp-quote leim-list-header)) | 2730 (if (looking-at (regexp-quote leim-list-header)) |
2745 (goto-char (match-end 0)) | 2731 (goto-char (match-end 0)) |
2794 (goto-char (point-min)) | 2780 (goto-char (point-min)) |
2795 (while (search-forward "(quail-define-package" nil t) | 2781 (while (search-forward "(quail-define-package" nil t) |
2796 (goto-char (match-beginning 0)) | 2782 (goto-char (match-beginning 0)) |
2797 (condition-case nil | 2783 (condition-case nil |
2798 (let ((form (read (current-buffer)))) | 2784 (let ((form (read (current-buffer)))) |
2799 (save-excursion | 2785 (with-current-buffer list-buf |
2800 (set-buffer list-buf) | |
2801 (insert | 2786 (insert |
2802 (format "(register-input-method | 2787 (format "(register-input-method |
2803 %S %S '%s | 2788 %S %S '%s |
2804 %S %S | 2789 %S %S |
2805 %S)\n" | 2790 %S)\n" |
2819 (message "Some part of \"%s\" is broken" dirname))))) | 2804 (message "Some part of \"%s\" is broken" dirname))))) |
2820 (setq pkg-list (cdr pkg-list))) | 2805 (setq pkg-list (cdr pkg-list))) |
2821 (setq quail-dirs (cdr quail-dirs) dirnames (cdr dirnames)))) | 2806 (setq quail-dirs (cdr quail-dirs) dirnames (cdr dirnames)))) |
2822 | 2807 |
2823 ;; At last, write out LEIM list file. | 2808 ;; At last, write out LEIM list file. |
2824 (save-excursion | 2809 (with-current-buffer list-buf |
2825 (set-buffer list-buf) | |
2826 (setq buffer-file-coding-system 'iso-2022-7bit) | 2810 (setq buffer-file-coding-system 'iso-2022-7bit) |
2827 (save-buffer 0)) | 2811 (save-buffer 0)) |
2828 (kill-buffer list-buf) | 2812 (kill-buffer list-buf) |
2829 (message "Updating %s ... done" leim-list))) | 2813 (message "Updating %s ... done" leim-list))) |
2830 | 2814 |