emacs-diffs
[Top][All Lists]
Advanced

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

master ba04217 2/2: Fix display of working text on NS (Bug#23412, Bug#14


From: Alan Third
Subject: master ba04217 2/2: Fix display of working text on NS (Bug#23412, Bug#1453)
Date: Sun, 22 Dec 2019 06:49:09 -0500 (EST)

branch: master
commit ba042176d8931cdf9441b3b4919ec74b75019494
Author: Masahiro Nakamura <address@hidden>
Commit: Alan Third <address@hidden>

    Fix display of working text on NS (Bug#23412, Bug#1453)
    
    * lisp/term/ns-win.el (ns-insert-working-text):
    (ns-delete-working-text): Change how working text is deleted to handle
    changed order of operations.
    * src/nsterm.m ([EmacsView insertText:]): Move deletion of working
    text until after insertion of new text.
    
    Copyright-paperwork-exempt: yes
---
 lisp/term/ns-win.el | 10 ++++------
 src/nsterm.m        |  8 ++++----
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 1841e67..81e9a0c 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -316,10 +316,9 @@ The overlay is assigned the face `ns-working-text-face'."
   (interactive)
   (ns-delete-working-text)
   (let ((start (point)))
-    (insert ns-working-text)
-    (overlay-put (setq ns-working-overlay (make-overlay start (point)
-                                                       (current-buffer) nil t))
-                'face 'ns-working-text-face)))
+    (overlay-put (setq ns-working-overlay (make-overlay start (point)))
+                 'after-string
+                 (propertize ns-working-text 'face 'ns-working-text-face))))
 
 (defun ns-echo-working-text ()
   "Echo contents of `ns-working-text' in message display area.
@@ -342,8 +341,7 @@ See `ns-insert-working-text'."
          ;; Still alive?
          (overlay-buffer ns-working-overlay))
     (with-current-buffer (overlay-buffer ns-working-overlay)
-      (delete-region (overlay-start ns-working-overlay)
-                     (overlay-end ns-working-overlay))
+      (overlay-put ns-working-overlay 'after-string nil)
       (delete-overlay ns-working-overlay)))
    ((integerp ns-working-overlay)
     (let ((msg (current-message))
diff --git a/src/nsterm.m b/src/nsterm.m
index 6995577..9e036aa 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6460,10 +6460,6 @@ not_in_argv (NSString *arg)
   if (!emacs_event)
     return;
 
-  /* First, clear any working text.  */
-  if (workingText != nil)
-    [self deleteWorkingText];
-
   /* It might be preferable to use getCharacters:range: below,
      cf. 
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CocoaPerformance/Articles/StringDrawing.html#//apple_ref/doc/uid/TP40001445-112378.
      However, we probably can't use SAFE_NALLOCA here because it might
@@ -6492,6 +6488,10 @@ not_in_argv (NSString *arg)
       emacs_event->code = code;
       EV_TRAILER ((id)nil);
     }
+
+  /* Last, clear any working text.  */
+  if (workingText != nil)
+    [self deleteWorkingText];
 }
 
 



reply via email to

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