aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahiro Nakamura2019-12-19 00:32:54 +0900
committerAlan Third2019-12-22 11:47:29 +0000
commitba042176d8931cdf9441b3b4919ec74b75019494 (patch)
tree2a4cb526d7b457562dad46cef528a104f8a58324
parentbfc54230c56dc85cd8a8073962cf6ed00758e1a6 (diff)
downloademacs-ba042176d8931cdf9441b3b4919ec74b75019494.tar.gz
emacs-ba042176d8931cdf9441b3b4919ec74b75019494.zip
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
-rw-r--r--lisp/term/ns-win.el10
-rw-r--r--src/nsterm.m8
2 files changed, 8 insertions, 10 deletions
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 1841e679ac8..81e9a0cc9a8 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'."
316 (interactive) 316 (interactive)
317 (ns-delete-working-text) 317 (ns-delete-working-text)
318 (let ((start (point))) 318 (let ((start (point)))
319 (insert ns-working-text) 319 (overlay-put (setq ns-working-overlay (make-overlay start (point)))
320 (overlay-put (setq ns-working-overlay (make-overlay start (point) 320 'after-string
321 (current-buffer) nil t)) 321 (propertize ns-working-text 'face 'ns-working-text-face))))
322 'face 'ns-working-text-face)))
323 322
324(defun ns-echo-working-text () 323(defun ns-echo-working-text ()
325 "Echo contents of `ns-working-text' in message display area. 324 "Echo contents of `ns-working-text' in message display area.
@@ -342,8 +341,7 @@ See `ns-insert-working-text'."
342 ;; Still alive? 341 ;; Still alive?
343 (overlay-buffer ns-working-overlay)) 342 (overlay-buffer ns-working-overlay))
344 (with-current-buffer (overlay-buffer ns-working-overlay) 343 (with-current-buffer (overlay-buffer ns-working-overlay)
345 (delete-region (overlay-start ns-working-overlay) 344 (overlay-put ns-working-overlay 'after-string nil)
346 (overlay-end ns-working-overlay))
347 (delete-overlay ns-working-overlay))) 345 (delete-overlay ns-working-overlay)))
348 ((integerp ns-working-overlay) 346 ((integerp ns-working-overlay)
349 (let ((msg (current-message)) 347 (let ((msg (current-message))
diff --git a/src/nsterm.m b/src/nsterm.m
index 6995577920e..9e036aa1608 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6460,10 +6460,6 @@ not_in_argv (NSString *arg)
6460 if (!emacs_event) 6460 if (!emacs_event)
6461 return; 6461 return;
6462 6462
6463 /* First, clear any working text. */
6464 if (workingText != nil)
6465 [self deleteWorkingText];
6466
6467 /* It might be preferable to use getCharacters:range: below, 6463 /* It might be preferable to use getCharacters:range: below,
6468 cf. https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CocoaPerformance/Articles/StringDrawing.html#//apple_ref/doc/uid/TP40001445-112378. 6464 cf. https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CocoaPerformance/Articles/StringDrawing.html#//apple_ref/doc/uid/TP40001445-112378.
6469 However, we probably can't use SAFE_NALLOCA here because it might 6465 However, we probably can't use SAFE_NALLOCA here because it might
@@ -6492,6 +6488,10 @@ not_in_argv (NSString *arg)
6492 emacs_event->code = code; 6488 emacs_event->code = code;
6493 EV_TRAILER ((id)nil); 6489 EV_TRAILER ((id)nil);
6494 } 6490 }
6491
6492 /* Last, clear any working text. */
6493 if (workingText != nil)
6494 [self deleteWorkingText];
6495} 6495}
6496 6496
6497 6497