aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/term/ns-win.el73
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 @@
12009-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
12009-02-24 Juanma Barranquero <lekktu@gmail.com> 102009-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) 795When 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
832ns-working-overlay. Any previously existing working text is cleared first. 829`ns-working-overlay'. Any previously existing working text is cleared first.
833The overlay is assigned the face ns-working-text-face." 830The 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.
847See ns-insert-working-text." 843See `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))