emacs-devel
[Top][All Lists]
Advanced

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

Re: Preserving sanity in Emacs [Re: rampant region highlighting]


From: Alan Mackenzie
Subject: Re: Preserving sanity in Emacs [Re: rampant region highlighting]
Date: Mon, 7 Apr 2008 21:26:17 +0000
User-agent: Mutt/1.5.9i

Hi, David!

On Mon, Apr 07, 2008 at 12:50:42AM +0100, David De La Harpe Golden wrote:
> Alan Mackenzie wrote:

> > PLEASE STOP DOING THIS!!!  This is a _mailing_ _list_, not a web
> > forum.  Quote the Subject:, Date:, and Message-Id: at the very least,
> > please, for heaven's sake! 

> From:         martin rudalics
> Subject:  Re: Enabling Transient Mark Mode by default
> Date:         Thu, 21 Feb 2008 08:30:11 +0100

Thanks!  Sorry, I've not been able to reply earlier.  My ISP's mail
server crashed, and I was having to read the conversation via the HTML
archive.  ;-)

> I don't see the  Message-Id in the archive - I don't see why the
> archive couldn't present them in principle, it just doesn't.
> http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg01892.html

Possibly because the Message-Id offers the server name to harvesting
spammers.

> > So, point disappears off your screen.  How are you supposed to get
> > back there?  What key sequence would you suggest for the new command
> > `scroll-to-pont'? 

> What's more disturbing overall, jump scrolling (it could be rapidly
> smooth-scrolled given today's hardware...) or emacs taking it upon
> itself to move your chosen point position?

Jump scrolling.  Emacs never autonomously move point.  The user does.

> I acknowledge that having the point always on-screen has benefits too
> (though e.g. a fringe indicator could "point towards the offscreen
> point" to address some concerns there...), but what if I'm just
> scrolling up to look at something?  Martin's hack ensured that I can
> scroll away to have a look, and the point will reliably be where I left
> it when I scrolled back.

The functions you're talking about are fulfilled in Emacs by the mark,
not the point.  I frequently scoll a bit to look at things.  Then I
scroll back to get where I was, unless I want to stay where I've got to.

The point is, by your mechanism, having scrolled away from point (leaving
point off the screen), how do you then indicate where on the screen you
want point to be set to, and how do you set point there?  The general
Emacs answer is that you indicate a position by setting point.  Hmm.
We're going round in circles.  (You're presumably going to say "you click
the mouse to set point."  This violates the Emacs principle that
everything must be doable without a mouse.)

> Users are used to their editors' points staying where they left them
> during scrolling these days-

Emacs users aren't.  Are you arguing that we should change Emacs merely
to follow the fashion of the day?

> you talk of losing mental context, well, if your mind is used to the
> editor leaving the point where you left it rather than having to
> remember, then emacs' point warping is a pretty big context disruptor.

Not that big.  For a start, you notice it before you've gone very far.
Pressing <page down> _always_ takes point away from where it was.  With
LCD[*] editors, sometimes pressing 'a' will teleport you to far off
place, sometimes not.  This is one more item of state you've got to
retain in your head with an LCD editor - whether a random key will cause
a context explosion or not.  This is an example of Emacs's instrinsic
superiority.

[*] "lowest common denominator"

> BOOM! The word "you" (as represented by your boxy 3rd person avatar,
> the point) were "on" isn't the word you're on anymore, you're on some
> completely different sentence!  Why should scrolling, just sliding your
> viewpoint around, change that?

Because the purpose of point in Emacs is to indicate where you're doing
something.  Here, "doing" includes "looking at".  The thing that
remembers a position to go back to is the mark - This is deliberate
design, as evidenced by M->, C-s, and friends setting the mark.

> Just adjusting the camera position in a computer game doesn't usually
> make your character randomly teleport to different platforms. Scrolling
> a web page form doesn't make the cursor jump from form field to form
> field, etc.

In a computer game, say a flight simulator, moving the joystick doesn't
suddenly jerk the scenery back to the place where you last moved it.  As
for web pages, they are a user interface disaster, practically for
anything.

> I'm quite used to emacs conventions, having literally grown up using it
> (okay, beginning with amiga's bundled microemacs rather than gnu
> emacs), so I'm playing devils advocate to an extent here, but it's not
> like it'd be impossible for emacs to support both
> point-ensured-onscreen and point-can-go-offscreen behaviours _anyway_.

I think it would be fairly close to impossible.  The rule that point is
always on the screen is so deeply embedded, mostly implicitly, that you
might as well write a new editor core than try and adapt the existing
Emacs.

[ .... ]

> > The point is the place on the screen that you're looking at, where
> > new text appears when you type.  Are you suggesting that when you
> > type, you shouldn't see anything, because "point" isn't on the
> > screen?

> Nope, jump-scroll back to insertion point handily addresses that. :-)

So, how do you move point rapidly to somewhere else in a buffer?  There's
not much point using the <page down> key, if the moment you try to do
something you're jump-scrolled back to where you started.  (Remember,
there might not be a usable mouse, and the user might not want to have to
use one even if there is.)

It was such a bloody relief to get away from that misfeature when I came
to Emacs. 

-- 
Alan Mackenzie (Nuremberg, Germany).




reply via email to

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