Subject: Re: bug#52896: 29.0.50; transient-mark-mode is set to a lot of 'only syms

From: Eli Zaretskii <[email-masked]>
Date: Mon, 03 Jan 2022 16:21:52 +0200

> From: Andrey Listopadov <[email-masked]>
> Date: Thu, 30 Dec 2021 23:40:25 +0300
> Cc: [email-masked]
> 
> 1. M-x transient-mark-mode RET - turn tmm off;
> 2. S-right - select the default text in the *scratch* buffer;
> 3. `C-x C-x`, `C-x C-x`, `C-x C-x`, `C-x C-x`, `C-x C-x`, `C-x C-x` -
> this would cons some `only' symbols to the list;
> 4. `C-g' - remove the region highlighting, this removes one `only'
> from the list;
> 5. `C-SPC C-SPC' - displays a message "mark set" and then "mark
> activated",  but no highlighting happens, because of remaining `only'
> in the list.

Thanks.  Does the patch below give good results, i.e. does it fix this
problem without introducing any others?

diff --git a/lisp/simple.el b/lisp/simple.el
index 070d276..31463a7 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -6664,7 +6664,7 @@ exchange-point-and-mark
         (user-error "No mark set in this buffer"))
     (set-mark (point))
     (goto-char omark)
-    (cond (temp-highlight
+    (cond ((not temp-highlight)
 	   (setq-local transient-mark-mode (cons 'only transient-mark-mode)))
 	  ((xor arg (not (region-active-p)))
 	   (deactivate-mark))