help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: Mark set by ‘mark-*’ not deactivated by point motion


From: Yuri Khan
Subject: Re: Mark set by ‘mark-*’ not deactivated by point motion
Date: Tue, 18 Sep 2018 13:24:17 +0700

On Tue, Sep 18, 2018 at 2:23 AM Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> > Observed behavior: point moves as commanded, mark remains active.
> > Expected behavior: point moves, mark is deactivated.
>
> Could you clarify what would be the benefit of the behavior you expect
> (other than fitting your expectation, obviously ;-)?

The benefit is not obvious at first, but I think it is a matter of UI
modality. See below.

> I'm more wondering about why you'd mark a word with M-@ only to
> immediately afterwards deactivate the region.
>
> I never use M-@ but I use C-M-SPC all the time, and very often I do
> C-M-SPC (maybe repeated a few times) followed by some cursor motion
> (including C-x C-x sometimes) to "fine tune" the boundaries of the
> active region.

I actually noticed this behavior from C-M-SPC ‘mark-sexp’ and M-h in
org-mode ‘org-mark-element’. I never use mark-word either, because
C-S-arrows do the same thing and work in all applications.

My scenario is: I press the key to mark something, but I started in
the wrong place so it marked the wrong thing, so I want to move to the
correct place and press it again.

To fine-tune, I would probably use Shift+arrows, possibly combined
with C-x C-x. But I don’t really do that; it’s easier to start over.

> On the contrary, I find the deactivate-mark behavior of
> "navigation after shifted-navigation" to be a mis-feature: it forces me
> to be careful to keep the shift key pressed until I'm really done
> setting up the region and it prevents me from using navigation commands
> which I can't use in a shifted form (or which don't (yet) support
> shift-select-mode).  I don't mind very much, tho: I just use C-SPC
> instead, but I think in terms of UI, navigation should never deactivate
> the mark.
>
> I have the impression that this behavior was simply copied from other
> applications, and those don't have something equivalent to Emacs's C-g,
> so their users are used to making a dummy un-shifted cursor movement
> when they just want to deactivate the selection.  But in Emacs we have
> C-g for that.

You are used to modal selection. You press C-SPC and now all
navigation commands mark a region. Then you press C-g or perform a
region command to return to normal mode.

I am used to quasi-modal selection. Navigation commands mark a region
only as long as I hold down the pedal, and the region is active only
as long as I haven’t moved away from it. This is important when
delete-selection-mode is on, because a stray region can easily be
deleted or replaced.

Dummy <end> or <left><right> keypresses (in other applications) are a
thing, yes. But most of the time the need to deactivate selection is
tied with the need to move to a different place.

> [ Side comment.  Emacs made the opposite choice for undo: when you want
>   to start redoing, you need to perform some dummy non-undo command
>   because there's no dedicated key-binding to switch between undo
>   and redo.  ]

Yes, and that design choice leads to the same consequence of modality:
C-_ behaves differently depending on what you did before. I use
redo.el to have separate bindings, C-z for undo, C-S-z for redo.



reply via email to

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