emacs-devel
[Top][All Lists]
Advanced

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

Re: Shift selection using interactive spec


From: Thomas Lord
Subject: Re: Shift selection using interactive spec
Date: Fri, 14 Mar 2008 04:36:48 -0700
User-agent: Thunderbird 1.5.0.5 (X11/20060808)

David Kastrup wrote:

Um.  Ok, take a buffer of text.  M-x transient-mark-mode.  Set a mark.
Move a bit with C-n.  Now hit G-g.

The region is now "deactivated," sure.   But type C-xC-x:
the mark you set is still there.  A *tentative* mark would
be completely wiped out by the C-g.
    

That is basically just a matter of semantics.


"Basically?"   Yes, the semantics of the command set is the topic.

I think you are trying to brush aside the real differences between
two approaches by saying it's "*just* semantics" (emphasis added).
But that's circular.   The two approaches are *defined* in terms of
their differing semantics.



  The command "C-x C-x" can
be thought of as setting the mark at point, and moving point where a
mark had been last.

  

And that means that the user's model of emacs is that emacs remembers
that that mark existed.   The user's model of Emacs' state is pretty tricky:  there's
"selected frame" and "current window" and "current minor modes" and etc.
But the state model that user's have to (one way or another) have a mental
map of -- at least the state model is orderly.

Tentative marks modify the base-line state-model of emacs only a tiny bit.
User's get a new "pronoun" (the tentative mark) to assign bindings to or to
refer to.   It's a very "context specific" pronoun in that it tends to become
unbound by default.

Transient marks modify the base-line state-model of emacs by a large
amount.   Commands that used to unconditionally work on "the region"
now have to work on the region only if the "activated" flag is set.  The
user is not just temporarily naming some point -- as with a tentative mark --
but is instead having to keep track of a new, buffer-local boolean variable.

So, tentative marks are cleaner.   It's just icing on the cake that,
aside from being cleaner from an Emacs perspective, they *also* happen
to be a more perfect emulation of what those "other GUIs" do.

-t





  
I've described why about 3 times already.  Tentative marks always go
away unless the user uses a key-sequence that preserves them or the
command the user invokes is a rare variety that explicitly preserves
it.
    

So the "advantage" of your "tentative mark" would be that "C-x C-x" now
beeps and does nothing.  What does that buy the user?

  
(I think if you look back at history you'll discover that
transient-mark-mode was actually a mistake.  It was
in effect a crude attempt to hack around the lack of
"tentative marks".   People were confused but were happy
that transient-mark-mode seemed to mostly highlight regions
and mostly work like other GUIs, at least in simple cases).
Tentative marks capture the familiar semantics much more
precisely than transient ones.
    

By making it impossible to recreate a mark where one had been last time?
What's the advantage in providing strictly less functionality?

  
Having looked at it more closely now, I would even suggest that
transient-mark-mode be deprecated (as in dis-recommended for use and
of low priority for compatibility, going forward).)
    

I don't get your point.  You basically want to remove functionality and
sell this as an advantage under a different name.

  


reply via email to

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