unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Transient Region Highlighting - an improvement over Transient Mark Mode.
@ 2008-04-01 15:19 Alan Mackenzie
  2008-04-01 16:06 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Alan Mackenzie @ 2008-04-01 15:19 UTC (permalink / raw)
  To: emacs-devel

Hi, Emacs!

I've criticised Transient Mark Mode somewhat in the last few days.  I
therefore feel obliged to make a constructive suggestion as how to make
it better.  Here is that suggestion:

Analysing T-M-M, it seems to consist of 3 vaguely related features:
(i) Disabling functions which operate on the region;
(ii) Highlighting the region;
(iii) Restricting the operation of some commands (e.g. M-x occur) to the
  region when highlit, a sort of narrowing.

Just as an aside, I think that terms like "active mark" and "activating
the region" are unhelpful, and have caused confused thinking over the
years.  Neither the mark nor the region is an agent - they don't DO
anything, anymore than a milepost on a country road between two villages,
or the road itself, do.  So I suggest we purge these terms from the code
and manual.


Feature (i) above, the one for which "Transient Mark Mode" is named,
doesn't seem to be useful, so let's just remove it - the mark, once set,
remains set, ditto for the region.  The variable mark-even-if-inactive is
redundant, and can vanish (or be marked obsolete).


Feature (ii) seems to be what people really want.  So let's rename the
entire feature "Region Highlighting Mode".  The variable
`region-highlighting-mode' should take the values nil, t, and possibly
'always, should there be anybody who wants the region always to be
highlit.

Region highlighting is switched on when the user types C-<space>, (?C-u)
C-x C-x or M-@ or the like, or the "certain mouse commands".  There
should be a command to switch it off (Keybinding C-u C-g, perhaps?).  I
don't think a simple C-g should switch it off.  Highlighting should also
be removed (via a before-change-function, possibly) when the buffer is
changed.  I don't think it should be switched off on executing a random
command.  For example, if you do M-: region-highlit, and see "t", the t
should remain meaningful.

"Momentary Transient Mark Mode" (there's tautology there ;-) should stay,
but be renamed to "Explicit Region Highlighting", to indicated that the
region gets highlit only when the user explicitly requests it via
C-<space> C-<space> or C-u C-x C-x.


Feature (iii) should be construed as "Wide area commands are restricted
to the region when it is highlit", and should be an option independent of
Region Highlighting Mode.  How about calling it
`area-commands-on-highlit-region-flag'?  To use this feature when Region
Highlighting is switched off, a user needs to set explicit region
highlighting first.


I think something like this design would be logically coherent, simple to
document, implement and use, would have the features that people want,
and be a vast improvement over the current Transient Mark Mode.

What do others think?

-- 
Alan Mackenzie (Nuremberg, Germany).




^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2008-04-02 20:40 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-01 15:19 Transient Region Highlighting - an improvement over Transient Mark Mode Alan Mackenzie
2008-04-01 16:06 ` Stefan Monnier
2008-04-01 17:49   ` Alan Mackenzie
2008-04-01 18:10     ` Luc Teirlinck
2008-04-01 18:18       ` Luc Teirlinck
2008-04-01 18:48       ` paul r
2008-04-01 19:04       ` Alan Mackenzie
2008-04-02  2:01         ` Mike Mattie
2008-04-02  0:57   ` Manoj Srivastava
2008-04-02 14:04     ` Stefan Monnier
2008-04-02 18:32       ` Manoj Srivastava
2008-04-02 20:40         ` David Kastrup
2008-04-01 17:08 ` Andreas Röhler
2008-04-01 17:16 ` Vincent Belaïche
2008-04-01 21:29   ` Mathias Dahl
2008-04-02  6:26     ` Jan Djärv

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).