diff options
| -rw-r--r-- | lisp/ChangeLog | 9 | ||||
| -rw-r--r-- | lisp/term/ns-win.el | 73 |
2 files changed, 44 insertions, 38 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 99cf5ee1f52..e0b2d1919ca 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2009-02-24 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * term/ns-win.el (ns-working-overlay): Don't make it buffer-local. | ||
| 4 | (ns-working-overlay-len): Remove. Use ns-working-overlay instead. | ||
| 5 | (ns-delete-working-text): Merge with ns-unecho-working-text. | ||
| 6 | Decide which to use based on ns-working-overlay. | ||
| 7 | (ns-unecho-working-text): Remove. | ||
| 8 | (ns-insert-working-text, ns-echo-working-text): Adjust accordingly. | ||
| 9 | |||
| 1 | 2009-02-24 Juanma Barranquero <lekktu@gmail.com> | 10 | 2009-02-24 Juanma Barranquero <lekktu@gmail.com> |
| 2 | 11 | ||
| 3 | * textmodes/ispell.el (ispell-region): Adapt "done" message to | 12 | * textmodes/ispell.el (ispell-region): Adapt "done" message to |
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index a2a11f077a9..96e62144d4c 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el | |||
| @@ -779,11 +779,11 @@ this defaults to \"printenv\"." | |||
| 779 | 779 | ||
| 780 | 780 | ||
| 781 | 781 | ||
| 782 | ;;;; Composed key sequence handling for Nextstep system input methods. | 782 | ;; Composed key sequence handling for Nextstep system input methods. |
| 783 | ;;;; (On Nextstep systems, input methods are provided for CJK | 783 | ;; (On Nextstep systems, input methods are provided for CJK |
| 784 | ;;;; characters, etc. which require multiple keystrokes, and during | 784 | ;; characters, etc. which require multiple keystrokes, and during |
| 785 | ;;;; entry a partial ("working") result is typically shown in the | 785 | ;; entry a partial ("working") result is typically shown in the |
| 786 | ;;;; editing window.) | 786 | ;; editing window.) |
| 787 | 787 | ||
| 788 | (defface ns-working-text-face | 788 | (defface ns-working-text-face |
| 789 | '((t :underline t)) | 789 | '((t :underline t)) |
| @@ -791,11 +791,8 @@ this defaults to \"printenv\"." | |||
| 791 | :group 'ns) | 791 | :group 'ns) |
| 792 | 792 | ||
| 793 | (defvar ns-working-overlay nil | 793 | (defvar ns-working-overlay nil |
| 794 | "Overlay used to highlight working text during compose sequence insert.") | 794 | "Overlay used to highlight working text during compose sequence insert. |
| 795 | (make-variable-buffer-local 'ns-working-overlay) | 795 | When text is in th echo area, this just stores the length of the working text.") |
| 796 | (defvar ns-working-overlay-len 0 | ||
| 797 | "Length of working text during compose sequence insert.") | ||
| 798 | (make-variable-buffer-local 'ns-working-overlay-len) | ||
| 799 | 796 | ||
| 800 | (defvar ns-working-text) ; nsterm.m | 797 | (defvar ns-working-text) ; nsterm.m |
| 801 | 798 | ||
| @@ -825,52 +822,52 @@ is currently being used." | |||
| 825 | (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text))) | 822 | (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text))) |
| 826 | (defun ns-unput-working-text () | 823 | (defun ns-unput-working-text () |
| 827 | (interactive) | 824 | (interactive) |
| 828 | (if (ns-in-echo-area) (ns-unecho-working-text) (ns-delete-working-text))) | 825 | (ns-delete-working-text)) |
| 829 | 826 | ||
| 830 | (defun ns-insert-working-text () | 827 | (defun ns-insert-working-text () |
| 831 | "Insert contents of ns-working-text as UTF8 string and mark with | 828 | "Insert contents of `ns-working-text' as UTF8 string and mark with |
| 832 | ns-working-overlay. Any previously existing working text is cleared first. | 829 | `ns-working-overlay'. Any previously existing working text is cleared first. |
| 833 | The overlay is assigned the face ns-working-text-face." | 830 | The overlay is assigned the face `ns-working-text-face'." |
| 834 | ;; FIXME: if buffer is read-only, don't try to insert anything | 831 | ;; FIXME: if buffer is read-only, don't try to insert anything |
| 835 | ;; and if text is bound to a command, execute that instead (Bug#1453) | 832 | ;; and if text is bound to a command, execute that instead (Bug#1453) |
| 836 | (interactive) | 833 | (interactive) |
| 837 | (if ns-working-overlay (ns-delete-working-text)) | 834 | (ns-delete-working-text) |
| 838 | (let ((start (point))) | 835 | (let ((start (point))) |
| 839 | (insert ns-working-text) | 836 | (insert ns-working-text) |
| 840 | (overlay-put (setq ns-working-overlay (make-overlay start (point) | 837 | (overlay-put (setq ns-working-overlay (make-overlay start (point) |
| 841 | (current-buffer) nil t)) | 838 | (current-buffer) nil t)) |
| 842 | 'face 'ns-working-text-face) | 839 | 'face 'ns-working-text-face))) |
| 843 | (setq ns-working-overlay-len (+ ns-working-overlay-len (- (point) start))))) | ||
| 844 | 840 | ||
| 845 | (defun ns-echo-working-text () | 841 | (defun ns-echo-working-text () |
| 846 | "Echo contents of ns-working-text in message display area. | 842 | "Echo contents of ns-working-text in message display area. |
| 847 | See ns-insert-working-text." | 843 | See `ns-insert-working-text'." |
| 848 | (if ns-working-overlay (ns-unecho-working-text)) | 844 | (ns-delete-working-text) |
| 849 | (let* ((msg (current-message)) | 845 | (let* ((msg (current-message)) |
| 850 | (msglen (length msg)) | 846 | (msglen (length msg)) |
| 851 | message-log-max) | 847 | message-log-max) |
| 852 | (setq ns-working-overlay-len (length ns-working-text)) | 848 | (setq ns-working-overlay (length ns-working-text)) |
| 853 | (setq msg (concat msg ns-working-text)) | 849 | (setq msg (concat msg ns-working-text)) |
| 854 | (put-text-property msglen (+ msglen ns-working-overlay-len) | 850 | (put-text-property msglen (+ msglen ns-working-overlay) |
| 855 | 'face 'ns-working-text-face msg) | 851 | 'face 'ns-working-text-face msg) |
| 856 | (message "%s" msg) | 852 | (message "%s" msg))) |
| 857 | (setq ns-working-overlay t))) | ||
| 858 | 853 | ||
| 859 | (defun ns-delete-working-text() | 854 | (defun ns-delete-working-text() |
| 860 | "Delete working text and clear ns-working-overlay." | 855 | "Delete working text and clear `ns-working-overlay'." |
| 861 | (interactive) | 856 | (interactive) |
| 862 | (delete-backward-char ns-working-overlay-len) | 857 | (cond |
| 863 | (setq ns-working-overlay-len 0) | 858 | ((and (overlayp ns-working-overlay) |
| 864 | (delete-overlay ns-working-overlay)) | 859 | ;; Still alive? |
| 865 | 860 | (overlay-buffer ns-working-overlay)) | |
| 866 | (defun ns-unecho-working-text() | 861 | (with-current-buffer (overlay-buffer ns-working-overlay) |
| 867 | "Delete working text from echo area and clear ns-working-overlay." | 862 | (delete-region (overlay-start ns-working-overlay) |
| 868 | (let ((msg (current-message)) | 863 | (overlay-end ns-working-overlay)) |
| 869 | message-log-max) | 864 | (delete-overlay ns-working-overlay))) |
| 870 | (setq msg (substring msg 0 (- (length msg) ns-working-overlay-len))) | 865 | ((integerp ns-working-overlay) |
| 871 | (message "%s" msg) | 866 | (let ((msg (current-message)) |
| 872 | (setq ns-working-overlay-len 0) | 867 | message-log-max) |
| 873 | (setq ns-working-overlay nil))) | 868 | (setq msg (substring msg 0 (- (length msg) ns-working-overlay))) |
| 869 | (message "%s" msg)))) | ||
| 870 | (setq ns-working-overlay nil)) | ||
| 874 | 871 | ||
| 875 | 872 | ||
| 876 | (declare-function ns-convert-utf8-nfd-to-nfc "nsfns.m" (str)) | 873 | (declare-function ns-convert-utf8-nfd-to-nfc "nsfns.m" (str)) |