From: Stefan Monnier on
> The thinking behind the line-move-visual decision went something like
> this. If C-n moves by logical lines then the new users would be
> confused. If it moves by visual lines then the experienced users would
> be bothered. But we have a flag whereby experienced users can revert to
> the old behavior. The new users won't know enough to set a flag. So,
> let us go with the default that helps out the new users. See this
> thread for example:

Choosing defaults is very difficult indeed. You can never please
everyone. In this specific case, I'm the main guy to blame: I wrote the
original patch for line-move-visual (oddly enough, since it touches
parts of the code I still am not at all familiar with), mostly because
it seemed it would be important for proper support of word-wrap (which
I didn't care for much, but many users cared about it).

After writing the patch, I tried it out, mostly for debugging purposes,
and much to my surprise I discovered that I actually liked it.

Yes, it occasionally doesn't do what I want, but in practice, it does
what I want more often than the previous case:
- when no line wraps, it either makes no difference, or it works
slightly better because it correctly accounts for
variable-pitch fonts.
- when lines are long (typically the "single-line paragraph" text coming
from people who either use word-wrap or longlines-mode or an editor
that behaves similarly, but can also happen in many other cases like
binary files, or mechanically-generated files), the new behavior is
much better (how did you move to "that spot I see about 10
visual-lines down from point" in a single logical line in
previous Emacsen?).
- when the buffer mostly fits without wrapping, except for a few
exceptions, then yes, the new behavior is less good for those
wrapped-lines. In my particular case, such lines are usually (very
minor) bugs anyway, so it's not that important, but I understand that
some people get annoyed. And of course, if you use C-100 C-n instead
of M-g M-g 100 RET to move to the line 100 (I personally use C-s 100
instead ;-), you'll be disappointed, and if you use keyboard macros
you'll also be disappointed.

Depending on your particular circumstances, the second case will only
rarely happen whereas the third will be very common, so you'll be
really annoyed. Sorry about that. Please (setq line-move-visual nil)
in your .emacs and/or try to come up with some idea how we could keep
the advantages in cases 1 and 2 without suffering in case 3.


Stefan
From: Uday S Reddy on
Stefan Monnier wrote:

> Choosing defaults is very difficult indeed. You can never please
> everyone. In this specific case, I'm the main guy to blame: I wrote the
> original patch for line-move-visual (oddly enough, since it touches
> parts of the code I still am not at all familiar with), mostly because
> it seemed it would be important for proper support of word-wrap (which
> I didn't care for much, but many users cared about it).

Isn't word-wrap the ideal solution for dealing with the single-line paragraphs
that you mention in the second bullet point below?

>
> Yes, it occasionally doesn't do what I want, but in practice, it does
> what I want more often than the previous case:
> - when no line wraps, it either makes no difference, or it works
> slightly better because it correctly accounts for
> variable-pitch fonts.
> - when lines are long (typically the "single-line paragraph" text coming
> from people who either use word-wrap or longlines-mode or an editor
> that behaves similarly, but can also happen in many other cases like
> binary files, or mechanically-generated files), the new behavior is
> much better (how did you move to "that spot I see about 10
> visual-lines down from point" in a single logical line in
> previous Emacsen?).
> - when the buffer mostly fits without wrapping, except for a few
> exceptions, then yes, the new behavior is less good for those
> wrapped-lines. In my particular case, such lines are usually (very
> minor) bugs anyway, so it's not that important, but I understand that
> some people get annoyed. And of course, if you use C-100 C-n instead
> of M-g M-g 100 RET to move to the line 100 (I personally use C-s 100
> instead ;-), you'll be disappointed, and if you use keyboard macros
> you'll also be disappointed.
>
> Depending on your particular circumstances, the second case will only
> rarely happen whereas the third will be very common, so you'll be
> really annoyed. Sorry about that. Please (setq line-move-visual nil)
> in your .emacs and/or try to come up with some idea how we could keep
> the advantages in cases 1 and 2 without suffering in case 3.

If line-move-visual is nil by default, the users that care about 1 and 2 can
set it to t, can't they? It is the same issue from the other side of the
fence. They don't need the default set in a particular way to get their behaviour.

Moreover, the people dealing with single-line paragraphs (me being one of them)
will normally use visual-line-mode, which does visual line motion anyway. So,
they are not affected by the default at all.

So, this particular decision doesn't seem to be all that difficult.

Cheers,
Uday


From: despen on
Stefan Monnier <monnier(a)iro.umontreal.ca> writes:

>> The thinking behind the line-move-visual decision went something like
>> this. If C-n moves by logical lines then the new users would be
>> confused. If it moves by visual lines then the experienced users would
>> be bothered. But we have a flag whereby experienced users can revert to
>> the old behavior. The new users won't know enough to set a flag. So,
>> let us go with the default that helps out the new users. See this
>> thread for example:
>
> Choosing defaults is very difficult indeed. You can never please
> everyone. In this specific case, I'm the main guy to blame:

Good, then I have something to contribute to this thread.

Nice work and I support the idea of making this a default.

For me, it was easy to spot the new behavior, and I assumed I
would find a description and override in the NEWS file.

So far I've found no reason to do so.

I hope the complainers get a full refund of all the money they
paid for your hard work and nothing else.

From: Richard Kettlewell on
Stefan Monnier <monnier(a)iro.umontreal.ca> writes:

> Depending on your particular circumstances, the second case will only
> rarely happen whereas the third will be very common, so you'll be
> really annoyed. Sorry about that. Please (setq line-move-visual nil)
> in your .emacs and/or try to come up with some idea how we could keep
> the advantages in cases 1 and 2 without suffering in case 3.

Perhaps an 'auto' setting where the behavior depended on the buffer
mode? For instance equivalent to 'nil' in programming language modes
and to 't' in text editing modes.

--
http://www.greenend.org.uk/rjk/
From: Mark Crispin on
On Thu, 10 Jun 2010, Uday S Reddy posted:
> A third suggestion is that we should start thinking of Emacs as
> mission-critical software.

It amazes me that anyone would think otherwise.

> It is really platform on which a
> number of critical services are delivered, for development of projects
> or for running of teams and organizations. A lot rides on it and any
> changes that potentially cause corruption of files or data can be quite
> serious.

As the kids say, "well, duh!"

This discussion is rapidly leading to "is free software suitable as
mission-critical software?".

Some people would be more comfortable is the answer is "no". Then they
don't have to deal with the responsibility of mission-critical software.

> Finally, and I might be a bit OTT here, I think we should think of free
> software as community-owned software. It is not developer-owned
> software (despite the aberration caused by the existence of FSF as a
> copyright-owner).

The notion of "community-owned software" works as ideology, but not as
reality. If emacs was really community-owned software, I as a community
member could revert the change in the official distribution sources. And
then there could be revert wars ala Wikipedia.

That existed once upon a time in the mid-1970s, at MIT (the ITS systems)
and elsewhere. It didn't end well.

The dichotomy between "the cathedral and the bazaar" that ESR postulated
doesn't really exist. The full-fledged bazaar option doesn't scale and
never actually happened. It's just two types of cathedrals, one run by a
pope and the other run by a board of laymen.

But even the laymen become power-corrupted.

> Free software isn't
> "free-to-fork" software, even though the right to fork exists as a last
> resort and as a foundation for everything else. If that right needs to
> be exercised, it is a signal that the community-ownership of the
> software has broken down and that is not good for any of us.

That is certainly true. Again, BSD serves as an example.

Another sign of a process breakdown is when a developer's answer to user
complaints about changes in a new version is "so just run the old
version". The need to revert to an old version means that the new version
is broken.

The corrolary to this is that the standard developer's answer to
complaints about bugs in an old version is "upgrade to the new version".
This only works if the upgrade is a viable option.

Developers can't have it both ways. If they create a new version that is
unacceptable to some portion of the user community, they they have
effectively forked the software.

Responsible developers figure this out after a while. It takes maturity.
Generally, they want their users to be using one, and only one, version;
and they do what is necessary to ensure that there are no barriers to
upgrade.

Since user interface surprise is a barrier to upgrade, they make sure
there aren't any such surprises.

In the real world, people get fired for inflicting surprises in
mission-critical software.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.