emacs-devel
[Top][All Lists]
Advanced

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

Re: need option so line-move-to-column ignores fields, plus patch


From: Chong Yidong
Subject: Re: need option so line-move-to-column ignores fields, plus patch
Date: Mon, 25 Sep 2006 17:43:51 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Richard Stallman <address@hidden> writes:

>     > | 1. With the cursor adjacent to the right of any bar,
>     >  |   if you move forwards a line (^N), the cursor slips to column 0.
>     >   | 2. Moving backwards (^P) with the cursor in the same place, however,
>     >    |   doesn't have this problem - it sticks near the boundary.
>     >
>     > #1 is clearly a bug.  C-n should be symmetrical with C-p.
>
>     I don't see where else the cursor can possibly go in #1.
>
> It can go to after the bar.  That's where it should go.

This logic is wrong.  Consider the case where there is a field' in the
region denoted XXXXXX; everywhere else, the `field' property is null.
Point is initially located at the position indicated by `|'.

  |
XXXXXXXXX

Clearly, pressing C-n should move point to the start of the field.
The trouble is that the example given by Ken is a particular case
where it *looks* as though the behavior you describe makes sense; but
in the more general case, it is wrong.

>       The logic of
>     line-move is like this: "Try to naively move the cursor vertically
>     down.  If this moves us into a new field, go instead to the beginning
>     of the field (if going forward) or the end of the field (if going
>     backward)."
>
> I'm saying we need to change that logic, so that the results
> will be good.
>
> I think we need a concept of temporary goal fields to go with the
> temporary goal column.  When you type the first line-move command
> it should record some info about the field you're in when you start.
> Then if a field with the same property appears on the line you move to,
> it should be handled as if it were -- in some sense -- "the same".

This is a feature, not a bug.

But if this behavior (i.e., treating non-contiguous fields as
identical for the purpose of line-motion) is really the behavior you
want, and we agree that it will close this bug, I can implement this
even more simply than that, by comparing `field' properties at the
relevant places inside line-move-finish.




reply via email to

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