emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/international/quail.el [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/international/quail.el [lexbind]
Date: Tue, 14 Oct 2003 19:39:32 -0400

Index: emacs/lisp/international/quail.el
diff -c emacs/lisp/international/quail.el:1.119.4.1 
emacs/lisp/international/quail.el:1.119.4.2
*** emacs/lisp/international/quail.el:1.119.4.1 Fri Apr  4 01:20:22 2003
--- emacs/lisp/international/quail.el   Tue Oct 14 19:39:23 2003
***************
*** 66,85 ****
  (make-variable-buffer-local 'quail-current-package)
  (put 'quail-current-package 'permanent-local t)
  
! ;; Quail uses the following two buffers to assist users.
! ;; A buffer to show available key sequence or translation list.
! (defvar quail-guidance-buf nil)
  ;; A buffer to show completion list of the current key sequence.
  (defvar quail-completion-buf nil)
  
  ;; Each buffer in which Quail is activated should use different
! ;; guidance buffers.
! (make-variable-buffer-local 'quail-guidance-buf)
! (put 'quail-guidance-buf 'permanent-local t)
! 
! ;; A main window showing Quail guidance buffer.
! (defvar quail-guidance-win nil)
! (make-variable-buffer-local 'quail-guidance-win)
  
  (defvar quail-overlay nil
    "Overlay which covers the current translation region of Quail.")
--- 66,84 ----
  (make-variable-buffer-local 'quail-current-package)
  (put 'quail-current-package 'permanent-local t)
  
! ;; Quail uses the following variables to assist users.
! ;; A string containing available key sequences or translation list.
! (defvar quail-guidance-str nil)
  ;; A buffer to show completion list of the current key sequence.
  (defvar quail-completion-buf nil)
+ ;; We may display the guidance string in a buffer on a one-line frame.
+ (defvar quail-guidance-buf nil)
+ (defvar quail-guidance-frame nil)
  
  ;; Each buffer in which Quail is activated should use different
! ;; guidance string.
! (make-variable-buffer-local 'quail-guidance-str)
! (put 'quail-guidance-str 'permanent-local t)
  
  (defvar quail-overlay nil
    "Overlay which covers the current translation region of Quail.")
***************
*** 514,520 ****
    (let ((pos (point)))
      (if (overlayp quail-overlay)
        (move-overlay quail-overlay pos pos)
!       (setq quail-overlay (make-overlay pos pos nil nil t))
        (if input-method-highlight-flag
          (overlay-put quail-overlay 'face 'underline))
        (let ((l (quail-overlay-plist)))
--- 513,519 ----
    (let ((pos (point)))
      (if (overlayp quail-overlay)
        (move-overlay quail-overlay pos pos)
!       (setq quail-overlay (make-overlay pos pos))
        (if input-method-highlight-flag
          (overlay-put quail-overlay 'face 'underline))
        (let ((l (quail-overlay-plist)))
***************
*** 525,531 ****
        (if (overlayp quail-conv-overlay)
            (if (not (overlay-start quail-conv-overlay))
                (move-overlay quail-conv-overlay pos pos))
!         (setq quail-conv-overlay (make-overlay pos pos nil nil t))
          (if input-method-highlight-flag
              (overlay-put quail-conv-overlay 'face 'underline))))))
  
--- 524,530 ----
        (if (overlayp quail-conv-overlay)
            (if (not (overlay-start quail-conv-overlay))
                (move-overlay quail-conv-overlay pos pos))
!         (setq quail-conv-overlay (make-overlay pos pos))
          (if input-method-highlight-flag
              (overlay-put quail-conv-overlay 'face 'underline))))))
  
***************
*** 536,546 ****
    (if (and (overlayp quail-conv-overlay) (overlay-start quail-conv-overlay))
        (delete-overlay quail-conv-overlay)))
  
- ;; Kill Quail guidance buffer.  Set in kill-buffer-hook.
- (defun quail-kill-guidance-buf ()
-   (if (buffer-live-p quail-guidance-buf)
-       (kill-buffer quail-guidance-buf)))
- 
  (defun quail-inactivate ()
    "Inactivate Quail input method.
  
--- 535,540 ----
***************
*** 562,570 ****
        ;; Let's inactivate Quail input method.
        (unwind-protect
          (progn
-           (quail-hide-guidance-buf)
            (quail-delete-overlays)
            (setq describe-current-input-method-function nil)
            (run-hooks 'quail-inactivate-hook))
        (kill-local-variable 'input-method-function))
      ;; Let's activate Quail input method.
--- 556,565 ----
        ;; Let's inactivate Quail input method.
        (unwind-protect
          (progn
            (quail-delete-overlays)
            (setq describe-current-input-method-function nil)
+           (quail-hide-guidance)
+           (remove-hook 'post-command-hook 'quail-show-guidance t)
            (run-hooks 'quail-inactivate-hook))
        (kill-local-variable 'input-method-function))
      ;; Let's activate Quail input method.
***************
*** 578,589 ****
      (setq inactivate-current-input-method-function 'quail-inactivate)
      (setq describe-current-input-method-function 'quail-help)
      (quail-delete-overlays)
!     (quail-show-guidance-buf)
      ;; If we are in minibuffer, turn off the current input method
      ;; before exiting.
!     (if (eq (selected-window) (minibuffer-window))
!       (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer))
!     (add-hook 'kill-buffer-hook 'quail-kill-guidance-buf nil t)
      (run-hooks 'quail-activate-hook)
      (make-local-variable 'input-method-function)
      (setq input-method-function 'quail-input-method)))
--- 573,585 ----
      (setq inactivate-current-input-method-function 'quail-inactivate)
      (setq describe-current-input-method-function 'quail-help)
      (quail-delete-overlays)
!     (setq quail-guidance-str "")
!     (quail-show-guidance)
      ;; If we are in minibuffer, turn off the current input method
      ;; before exiting.
!     (when (eq (selected-window) (minibuffer-window))
!       (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer)
!       (add-hook 'post-command-hook 'quail-show-guidance nil t))
      (run-hooks 'quail-activate-hook)
      (make-local-variable 'input-method-function)
      (setq input-method-function 'quail-input-method)))
***************
*** 1313,1337 ****
      (quail-setup-overlays (quail-conversion-keymap))
      (let ((modified-p (buffer-modified-p))
          (buffer-undo-list t))
-       (or (and quail-guidance-win
-              (window-live-p quail-guidance-win)
-              (eq (window-buffer quail-guidance-win) quail-guidance-buf)
-              (not input-method-use-echo-area))
-         (quail-show-guidance-buf))
        (unwind-protect
          (let ((input-string (if (quail-conversion-keymap)
                                  (quail-start-conversion key)
                                (quail-start-translation key))))
            (when (and (stringp input-string)
                       (> (length input-string) 0))
              (if input-method-exit-on-first-char
                  (list (aref input-string 0))
                (quail-input-string-to-events input-string))))
        (quail-delete-overlays)
-       (if (buffer-live-p quail-guidance-buf)
-           (with-current-buffer quail-guidance-buf
-             (erase-buffer)))
-       (quail-hide-guidance-buf)
        (set-buffer-modified-p modified-p)
        ;; Run this hook only when the current input method doesn't require
        ;; conversion.  When conversion is required, the conversion function
--- 1309,1325 ----
      (quail-setup-overlays (quail-conversion-keymap))
      (let ((modified-p (buffer-modified-p))
          (buffer-undo-list t))
        (unwind-protect
          (let ((input-string (if (quail-conversion-keymap)
                                  (quail-start-conversion key)
                                (quail-start-translation key))))
+           (setq quail-guidance-str "")
            (when (and (stringp input-string)
                       (> (length input-string) 0))
              (if input-method-exit-on-first-char
                  (list (aref input-string 0))
                (quail-input-string-to-events input-string))))
        (quail-delete-overlays)
        (set-buffer-modified-p modified-p)
        ;; Run this hook only when the current input method doesn't require
        ;; conversion.  When conversion is required, the conversion function
***************
*** 1378,1383 ****
--- 1366,1372 ----
            (setq unread-command-events (cons key unread-command-events)))
        (while quail-translating
          (set-buffer-modified-p modified-p)
+         (quail-show-guidance)
          (let* ((keyseq (read-key-sequence
                          (and input-method-use-echo-area
                               (concat input-method-previous-message
***************
*** 1442,1449 ****
                      quail-current-str ""
                      quail-translating t)
                (quail-setup-overlays nil)))
!         ;; Hide '... loaded' message.
!         (message nil)
          (let* ((keyseq (read-key-sequence
                          (and input-method-use-echo-area
                               (concat input-method-previous-message
--- 1431,1437 ----
                      quail-current-str ""
                      quail-translating t)
                (quail-setup-overlays nil)))
!         (quail-show-guidance)
          (let* ((keyseq (read-key-sequence
                          (and input-method-use-echo-area
                               (concat input-method-previous-message
***************
*** 1492,1500 ****
  (defun quail-terminate-translation ()
    "Terminate the translation of the current key."
    (setq quail-translating nil)
!   (if (buffer-live-p quail-guidance-buf)
!       (with-current-buffer quail-guidance-buf
!       (erase-buffer))))
  
  (defun quail-select-current ()
    "Accept the currently selected translation."
--- 1480,1486 ----
  (defun quail-terminate-translation ()
    "Terminate the translation of the current key."
    (setq quail-translating nil)
!   (setq quail-guidance-str " "))
  
  (defun quail-select-current ()
    "Accept the currently selected translation."
***************
*** 1535,1543 ****
                        (quail-simple))
                   (setq control-flag t)))))))
    (or input-method-use-echo-area
!       (progn
        (quail-delete-region)
!       (insert quail-current-str)))
    (let (quail-current-str)
      (quail-update-guidance))
    (or (stringp quail-current-str)
--- 1521,1538 ----
                        (quail-simple))
                   (setq control-flag t)))))))
    (or input-method-use-echo-area
!       (let (pos)
        (quail-delete-region)
!       (setq pos (point))
!       (insert quail-current-str)
!       (move-overlay quail-overlay pos (point))
!       (if (overlayp quail-conv-overlay)
!           (if (not (overlay-start quail-conv-overlay))
!               (move-overlay quail-conv-overlay pos (point))
!             (if (< (overlay-end quail-conv-overlay) (point))
!                 (move-overlay quail-conv-overlay
!                               (overlay-start quail-conv-overlay)
!                               (point)))))))
    (let (quail-current-str)
      (quail-update-guidance))
    (or (stringp quail-current-str)
***************
*** 1601,1607 ****
            (< cur start)               ; We moved to the previous block.
            (>= cur end))               ; We moved to the next block.
        (let ((len (length (cdr quail-current-translations)))
!             (maxcol (- (window-width quail-guidance-win)
                         quail-guidance-translations-starting-column))
              (block (nth 3 indices))
              col idx width trans num-items blocks)
--- 1596,1602 ----
            (< cur start)               ; We moved to the previous block.
            (>= cur end))               ; We moved to the next block.
        (let ((len (length (cdr quail-current-translations)))
!             (maxcol (- (window-width)
                         quail-guidance-translations-starting-column))
              (block (nth 3 indices))
              col idx width trans num-items blocks)
***************
*** 1697,1702 ****
--- 1692,1701 ----
  
            (t
             ;; No way to handle the last character in this context.
+            (setq def (quail-map-definition
+                       (quail-lookup-key quail-current-key (1- len))))
+            (if def (setq quail-current-str
+                          (quail-get-current-str (1- len) def)))
             (1- len))))))
  
  (defun quail-next-translation ()
***************
*** 1863,1870 ****
  
  ;; Guidance, Completion, and Help buffer handlers.
  
! (defun quail-make-guidance-frame (buf)
!   "Make a new one-line frame for Quail guidance buffer."
    (let* ((fparam (frame-parameters))
         (top (cdr (assq 'top fparam)))
         (border (cdr (assq 'border-width fparam)))
--- 1862,1869 ----
  
  ;; Guidance, Completion, and Help buffer handlers.
  
! (defun quail-make-guidance-frame ()
!   "Make a new one-line frame for Quail guidance."
    (let* ((fparam (frame-parameters))
         (top (cdr (assq 'top fparam)))
         (border (cdr (assq 'border-width fparam)))
***************
*** 1872,1885 ****
         (newtop (- top
                    (frame-char-height) (* internal-border 2) (* border 2))))
      (if (< newtop 0)
!       (setq newtop (+ top (frame-pixel-height))))
!     (let* ((frame (make-frame (append '((user-position . t) (height . 1)
!                                       (minibuffer) (menu-bar-lines . 0))
!                                     (cons (cons 'top newtop) fparam))))
!          (win (frame-first-window frame)))
!       (set-window-buffer win buf)
!       ;;(set-window-dedicated-p win t)
!       )))
  
  (defun quail-setup-completion-buf ()
    "Setup Quail completion buffer."
--- 1871,1881 ----
         (newtop (- top
                    (frame-char-height) (* internal-border 2) (* border 2))))
      (if (< newtop 0)
!       (setq newtop (+ top (frame-pixel-height) internal-border border)))
!     (make-frame (append '((user-position . t) (height . 1)
!                         (minibuffer)
!                         (menu-bar-lines . 0) (tool-bar-lines . 0))
!                       (cons (cons 'top newtop) fparam)))))
  
  (defun quail-setup-completion-buf ()
    "Setup Quail completion buffer."
***************
*** 1900,2023 ****
             (not (quail-simple))
           t))))
  
- (defun quail-show-guidance-buf ()
-   "Display a guidance buffer for Quail input method in some window.
- Create the buffer if it does not exist yet.
- The buffer is normally displayed at the echo area,
- but if the current buffer is a minibuffer, it is shown in
- the bottom-most ordinary window of the same frame,
- or in a newly created frame (if the selected frame has no other windows)."
-   (when (quail-require-guidance-buf)
-     ;; At first, setup a guidance buffer.
-     (let ((default-enable-multibyte-characters enable-multibyte-characters))
-       (or (buffer-live-p quail-guidance-buf)
-         (setq quail-guidance-buf (generate-new-buffer " *Quail-guidance*"))))
-     (let ((package quail-current-package))
-       (with-current-buffer quail-guidance-buf
-       ;; To show the title of Quail package.
-       (setq quail-current-package package
-             current-input-method (quail-name)
-             current-input-method-title (quail-title))
-       (erase-buffer)
-       (or (overlayp quail-overlay)
-           (progn
-             (setq quail-overlay (make-overlay 1 1))
-             (overlay-put quail-overlay 'face 'highlight)))
-       (delete-overlay quail-overlay)
-       (set-buffer-modified-p nil)))
-     (bury-buffer quail-guidance-buf)
- 
-     ;; Assign the buffer " *Minibuf-N*" to all windows which are now
-     ;; displaying quail-guidance-buf.
-     (let ((win-list (get-buffer-window-list quail-guidance-buf t t)))
-       (while win-list
-       (set-window-buffer (car win-list)
-                          (format " *Minibuf-%d*" (minibuffer-depth)))
-       (setq win-list (cdr win-list))))
- 
-     ;; Then, display it in an appropriate window.
-     (let ((win (minibuffer-window)))
-       (if (or (eq (selected-window) win)
-             input-method-use-echo-area)
-         ;; Since we are in minibuffer, we can't use it for guidance.
-         (if (eq win (frame-root-window))
-             ;; Create a frame.  It is sure that we are using some
-             ;; window system.
-             (quail-make-guidance-frame quail-guidance-buf)
-           ;; Find the bottom window and split it if necessary.
-           (setq win (window-at
-                      0 (1- (- (frame-height) (window-height win)))))
-           (let ((height (window-height win))
-                 (window-min-height 2))
-             ;; If WIN is tall enough, split it vertically and use
-             ;; the lower one.
-             (when (>= height 4)
-               ;; Here, `split-window' returns a lower window
-               ;; which is what we wanted.
-               (setq win (split-window win (- height 2))))
-             (set-window-buffer win quail-guidance-buf)
-             (with-current-buffer quail-guidance-buf
-               (fit-window-to-buffer win nil (window-height win)))))
-       (set-window-buffer win quail-guidance-buf)
-       (set-minibuffer-window win))
-       (setq quail-guidance-win win)))
  
!   ;; And, create a buffer for completion.
    (quail-setup-completion-buf)
!   (bury-buffer quail-completion-buf))
  
! (defun quail-hide-guidance-buf ()
!   "Hide the Quail guidance buffer."
!   (if (buffer-live-p quail-guidance-buf)
!       (let ((win-list (get-buffer-window-list quail-guidance-buf t t))
!           win)
!       (while win-list
!         (setq win (car win-list) win-list (cdr win-list))
!         (if (window-minibuffer-p win)
!             ;; We are using echo area for the guidance buffer.
!             ;; Vacate it to the deepest minibuffer.
!             (set-window-buffer win
!                                (format " *Minibuf-%d*" (minibuffer-depth)))
!           (if (eq win (frame-root-window (window-frame win)))
!               (progn
!                 ;; We are using a separate frame for guidance buffer.
!                 ;;(set-window-dedicated-p win nil)
!                 (delete-frame (window-frame win)))
!             ;;(set-window-dedicated-p win nil)
!             (delete-window win))))
!       (setq quail-guidance-win nil))))
  
  (defun quail-update-guidance ()
    "Update the Quail guidance buffer and completion buffer (if displayed now)."
!   ;; Update guidance buffer.
!   (if (quail-require-guidance-buf)
!       (let ((guidance (quail-guidance)))
!       (unless (and (eq (selected-frame) (window-frame (minibuffer-window)))
!                    (eq (selected-frame) (window-frame quail-guidance-win)))
!         ;; The guidance window is not shown in this frame, show it.
!         (quail-show-guidance-buf))
!       (cond ((or (eq guidance t)
!                  (consp guidance))
!              ;; Show the current possible translations.
!              (quail-show-translations))
!             ((null guidance)
!              ;; Show the current input keys.
!              (let ((key quail-current-key))
!                (if (quail-kbd-translate)
!                    (setq key (quail-keyseq-translate key)))
!                (with-current-buffer quail-guidance-buf
!                  (erase-buffer)
!                  (insert key)))))
!       ;; Make sure the height of the guidance window is OK --
!       ;; sometimes, if the minibuffer window expands due to user
!       ;; input (for instance if the newly inserted character is in a
!       ;; different font), it will cause the guidance window to be
!       ;; only partially visible.  We force a redisplay first because
!       ;; this automatic expansion doesn't happen until then, and we
!       ;; want to see the window sizes after the expansion.
!       (sit-for 0)
!       (fit-window-to-buffer quail-guidance-win nil
!                             (window-height quail-guidance-win))))
  
    ;; Update completion buffer if displayed now.  We highlight the
    ;; selected candidate string in *Completion* buffer if any.
--- 1896,1991 ----
             (not (quail-simple))
           t))))
  
  
! ;; Quail specific version of minibuffer-message.  It displays STRING
! ;; with timeout 1000000 seconds instead of two seconds.
! 
! (defun quail-minibuffer-message (string)
!   (message nil)
!   (let ((point-max (point-max))
!       (inhibit-quit t))
!     (save-excursion
!       (goto-char point-max)
!       (insert string))
!     (sit-for 1000000)
!     (delete-region point-max (point-max))
!     (when quit-flag
!       (setq quit-flag nil
!           unread-command-events '(7)))))
! 
! (defun quail-show-guidance ()
!   "Display a guidance for Quail input method in some window.
! The guidance is normally displayed at the echo area,
! or in a newly created frame (if the current buffer is a
! minibuffer and the selected frame has no other windows)."
!   ;; At first, setup a buffer for completion.
    (quail-setup-completion-buf)
!   (bury-buffer quail-completion-buf)
  
!   ;; Then, show the guidance.
!   (when (and (quail-require-guidance-buf)
!            (null unread-command-events)
!            (null unread-post-input-method-events))
!     (if (or (eq (selected-window) (minibuffer-window))
!           input-method-use-echo-area)
!       (if (eq (minibuffer-window) (frame-root-window))
!           ;; Use another frame.  It is sure that we are using some
!           ;; window system.
!           (let ((guidance quail-guidance-str))
!             (or (frame-live-p quail-guidance-frame)
!                 (setq quail-guidance-frame 
!                       (quail-make-guidance-frame)))
!             (or (buffer-live-p quail-guidance-buf)
!                 (setq quail-guidance-buf
!                       (get-buffer-create " *Quail-guidance*")))
!             (save-excursion
!               (set-buffer quail-guidance-buf)
!               (erase-buffer)
!               (setq cursor-type nil)
!               (insert guidance))
!             (set-window-buffer (frame-root-window quail-guidance-frame)
!                                quail-guidance-buf)
!             (quail-minibuffer-message
!              (format " [%s]" current-input-method-title)))
!         ;; Show the guidance in the next line of the currrent
!         ;; minibuffer.
!         (quail-minibuffer-message
!          (format "  [%s]\n%s" 
!                  current-input-method-title quail-guidance-str)))
!       ;; Show the guidance in echo area without logging.
!       (let ((message-log-max nil))
!       (message "%s" quail-guidance-str)))))
! 
! (defun quail-hide-guidance ()
!   "Hide the Quail guidance."
!   (when (and (quail-require-guidance-buf)
!            (or (eq (selected-window) (minibuffer-window))
!                input-method-use-echo-area)
!            (eq (minibuffer-window) (frame-root-window)))
!     ;; We are using another frame for the guidance.
!     (if (frame-live-p quail-guidance-frame)
!       (delete-frame quail-guidance-frame))
!     (if (buffer-live-p quail-guidance-buf)
!       (kill-buffer quail-guidance-buf))))
  
  (defun quail-update-guidance ()
    "Update the Quail guidance buffer and completion buffer (if displayed now)."
!   ;; Update the guidance string.
!   (when (quail-require-guidance-buf)
!     (let ((guidance (quail-guidance)))
!       (cond ((or (eq guidance t)
!                (consp guidance))
!            ;; Show the current possible translations.
!            (setq quail-guidance-str
!                  (quail-get-translations)))
!           ((null guidance)
!            ;; Show the current input keys.
!            (let ((key quail-current-key))
!              (if (quail-kbd-translate)
!                  (setq key (quail-keyseq-translate key)))
!              (setq quail-guidance-str (if (stringp key) key (string key)))))
!           (t
!            (setq quail-guidance-str " ")))))
  
    ;; Update completion buffer if displayed now.  We highlight the
    ;; selected candidate string in *Completion* buffer if any.
***************
*** 2036,2043 ****
              (delete-overlay quail-overlay)
            (setq pos (point))
            (if (and str (search-forward (concat "." str) nil t))
!                 (move-overlay quail-overlay (1+ (match-beginning 0)) (point))
!               (move-overlay quail-overlay (match-beginning 0) (point)))
            ;; Now POS points end of KEY and (point) points end of STR.
            (if (pos-visible-in-window-p (point) win)
                ;; STR is already visible.
--- 2004,2011 ----
              (delete-overlay quail-overlay)
            (setq pos (point))
            (if (and str (search-forward (concat "." str) nil t))
!               (move-overlay quail-overlay (1+ (match-beginning 0)) (point))
!             (move-overlay quail-overlay (match-beginning 0) (point)))
            ;; Now POS points end of KEY and (point) points end of STR.
            (if (pos-visible-in-window-p (point) win)
                ;; STR is already visible.
***************
*** 2051,2113 ****
                  (set-window-start win pos))
              ))))))
  
! (defun quail-show-translations ()
!   "Show the current possible translations."
!   (let* ((key quail-current-key)
!        (map (quail-lookup-key quail-current-key))
!        (current-translations quail-current-translations))
      (if quail-current-translations
        (quail-update-current-translations))
-     (with-current-buffer quail-guidance-buf
-       (erase-buffer)
  
!       ;; Show the current key.
!       (let ((guidance (quail-guidance)))
!       (if (listp guidance)
!           ;; We must show the specified PROMPTKEY instead of the
!           ;; actual typed keys.
!           (let ((i 0)
!                 (len (length key))
!                 prompt-key)
!             (while (< i len)
!               (setq prompt-key (cdr (assoc (aref key i) guidance)))
!               (insert (or prompt-key (aref key i)))
!               (setq i (1+ i))))
!         (insert key)))
  
        ;; Show followable keys.
!       (if (and (> (length key) 0) (cdr map))
!         (let ((keys (mapcar (function (lambda (x) (car x)))
!                             (cdr map))))
!           (setq keys (sort keys '<))
!           (insert "[")
!           (while keys
!             (insert (car keys))
!             (setq keys (cdr keys)))
!           (insert "]")))
! 
        ;; Show list of translations.
!       (if (and current-translations
               (not (quail-deterministic)))
!         (let* ((indices (car current-translations))
                 (cur (car indices))
                 (start (nth 1 indices))
                 (end (nth 2 indices))
                 (idx start))
!           (indent-to (- quail-guidance-translations-starting-column 7))
!           (insert (format "(%02d/"(nth 3 indices))
!                   (if (nth 4 indices)
!                       (format "%02d)" (nth 4 indices))
!                     "??)"))
            (while (< idx end)
!             (insert (format " %d." (if (= (- idx start) 9) 0
!                                      (1+ (- idx start)))))
!             (let ((pos (point)))
!               (insert (aref (cdr current-translations) idx))
                (if (= idx cur)
!                   (move-overlay quail-overlay pos (point))))
!             (setq idx (1+ idx)))))
!       )))
  
  (defvar quail-completion-max-depth 5
    "The maximum depth of Quail completion list.")
--- 2019,2085 ----
                  (set-window-start win pos))
              ))))))
  
! (defun quail-get-translations ()
!   "Return a string containing the current possible translations."
!   (let ((map (quail-lookup-key quail-current-key))
!       (str (copy-sequence quail-current-key)))
      (if quail-current-translations
        (quail-update-current-translations))
  
!     ;; Show the current key.
!     (let ((guidance (quail-guidance)))
!       (if (listp guidance)
!         ;; We must replace thetyped key with the specified PROMPTKEY.
!         (dotimes (i (length str))
!           (let ((prompt-key (cdr (assoc (aref str i) guidance))))
!             (if prompt-key
!                 (aset str i (aref prompt-key 0)))))))
  
        ;; Show followable keys.
!       (if (and (> (length quail-current-key) 0) (cdr map))
!         (setq str
!               (format "%s[%s]"
!                       str
!                       (concat (sort (mapcar (function (lambda (x) (car x)))
!                                             (cdr map))
!                                     '<)))))
        ;; Show list of translations.
!       (if (and quail-current-translations
               (not (quail-deterministic)))
!         (let* ((indices (car quail-current-translations))
                 (cur (car indices))
                 (start (nth 1 indices))
                 (end (nth 2 indices))
                 (idx start))
!           (if (< (string-width str)
!                  (- quail-guidance-translations-starting-column 7))
!               (setq str
!                     (concat str
!                             (make-string
!                              (- quail-guidance-translations-starting-column
!                                 7 (string-width str))
!                              32))))
!           (setq str (format "%s(%02d/%s)" 
!                             str (nth 3 indices)
!                             (if (nth 4 indices)
!                                 (format "%02d" (nth 4 indices))
!                               "??")))
            (while (< idx end)
!             (let ((len (length str))
!                   (trans (aref (cdr quail-current-translations) idx)))
!               (or (stringp trans)
!                   (setq trans (string trans)))
!               (setq str (format "%s %d.%s" 
!                                 str
!                                 (if (= (- idx start) 9) 0
!                                   (1+ (- idx start)))
!                                 trans))
                (if (= idx cur)
!                   (put-text-property (+ len 3) (length str)
!                                     'face 'highlight str))
!               (setq idx (1+ idx))))))
! 
!       str))
  
  (defvar quail-completion-max-depth 5
    "The maximum depth of Quail completion list.")
***************
*** 2848,2851 ****
--- 2820,2824 ----
  ;;
  (provide 'quail)
  
+ ;;; arch-tag: 46d7db54-5467-42c4-a2a9-53ca90a1e886
  ;;; quail.el ends here




reply via email to

[Prev in Thread] Current Thread [Next in Thread]