Subject: bug#11191: C-x C-x does not activate the selection anymore with cua-selection-mode

From: Dan Nicolaescu <[email-masked]>
Date: Mon, 09 Apr 2012 10:16:42 -0400

Kim Storm <[email-masked]> writes:

> On 04/09/2012 07:50 AM, Dan Nicolaescu wrote:
>> Chong Yidong<[email-masked]>  writes:
>>
>>> Dan Nicolaescu<[email-masked]>  writes:
>>>
>>> [recipe edited]
>>>
>>>> emacs -Q
>>>> M-x cua-selection-mode RET
>>>> M-<
>>>> C-SPC C-f C-f C-f C-g
>>>> C-x C-x
>>>>
>>>> now the selection should be active, but it is not.
>>>> This worked in emacs-23.3, so this is a regression.
>>> Looks like this change was made deliberately:
>>>
>>>    revno: 102844
>>>    committer: Kim F. Storm<[email-masked]>
>>>    branch nick: trunk
>>>    timestamp: Fri 2011-01-14 16:06:17 +0100
>>>    message:
>>>    * emulation/cua-base.el (cua--init-keymaps):
>>>    Remap exchange-point-and-mark in cua-global-keymap.
>>>
>>> The docstring of `cua-exchange-point-and-mark' says it does not activate
>>> the mark.
>>> Kim, could you confirm that this was the intention?
>>
>> In emacs-22.3 and 23.3 it does activate the mark.
>> C-x C-x also activates the mark in the trunk without
>> cua-selection-mode.
>>
>> Wouldn't it be better that instead of changing something that has been
>> present in two major releases and is consistent with the default behavior,
>> to change the docstring?
>>
>
> The current behaviour is "by design"

It might be, but the behavior before your changes has been available in
two major releases (22.x and 23.x), with no complaints from users (that
I could find).  
Changing behavior on a highly visible feature is not something that we
should take lightly.

> Personally, I find it very annoying if C-x C-x activates the mark with
> cua-mode - as it becomes very
> hard to enter another C-x C-x to cancel it (it actually requires three
> C-x typed rapidly -- otherwise
> it will delete the region.  That is why cua-exchange-point-and-mark
> doesn't activate the mark
> by default.

You might want to do something different for cua-mode vs
cua-selection-mode (where C-x C-x has no other problems).

> - but with reference to bug #6199 on the same subject,  I have already
> approved to change the behaviour
> --- if anyone feels it is necessary.
>
> I think the following version should do the trick
>
> (defun cua-exchange-point-and-mark (arg)
>   "Exchanges point and mark.
> Don't activate the mark if a prefix argument is given."
>   (interactive "P")
>   (let ((ma mark-active))
>     (exchange-point-and-mark)
>     (if cua--rectangle
>     (cua--rectangle-corner 0))
>     (if arg
>     (setq mark-active ma))))