Subject: bug#16403: Rectangular selection visually disturbing

From: Drew Adams <[email-masked]>
Date: Wed, 5 Mar 2025 22:25:50 +0000

> >> > that thin vertical line.  I find it convenient (tho I agree that the
> >> > small motion is bar jarring), but that's a question of taste.
> >>
> >> It is a bit more than only convenient: for commands like
> >> `string-rectangle' or `rectangle-number-lines' it is an important guide
> >> visualizing what one will get.
> >
> > FWIW: As I said, I dislike the current visual effect of shifting the
> > text.  And I would definitely prefer _not_ to see _any_ visual
> > indication of a zero-columns rectangle, if that indication entails
> > such a visual effect.  That's why I'm asking for a way to configure
> > the behavior I prefer.
> 
> In the short term, I think adding a config var to disable the small
> space is probably the best option.  Patch welcome.
> In the longer term, it might be worthwhile to consider adding a delay,
> i.e. a zero-width rectangle would start being shown as "zero width" but
> after a short idle time we'd add the small space to make it more
> visually obvious.  It would help avoid the small movement that
> occurs between the time you `C-x RET` and the time you start moving
> the cursor while still offering the convenient visual feedback to those
> willing to wait a little.

As long as we're considering shedding bikes, maybe
toss this orthogonal possibility into the list.

When the selection is a 0-columns rectangle, show
the vertical thin-space line with a different face,
to make it more prominent.  Optionally, of course.

IOW, have an option for the highlighting behavior
when zero columns are selected:

 1. No highlighting (no thin space, so no apparent
    movement).
    E.g., numeric value N, for highlighting after
    N seconds.  (0 means what you suggested.)
 2. Highlighting with face `region'.
    E.g., value nil.
 3. Highlighting with another face.
    E.g., value that face.

That third possibility can help if face `region'
doesn't stand out that much and you want to see
better that a rectangle is selected and where it is.