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: Ken Manheimer
Subject: Re: need option so line-move-to-column ignores fields, plus patch
Date: Wed, 27 Sep 2006 13:18:16 -0400

On 9/25/06, Chong Yidong <address@hidden> wrote:

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 difference here is that, in my model for #1, above, the "|" cursor
is starting from within a field marked XXXXXX.  if you implement what
you describe below, column-sticky would be provided, as i wish.

>       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.

in the situation as it's been, i was in a bind.  i wanted to use
fields to get ^A to respect the boundary between the content and
structure parts of the item head lines.  i didn't want to sacrifice
column-stickiness when moving between successive head lines.  as far
as i can see, by calling this a feature, you're suggesting that i
should either give up on the ^A functionality or column-stickiness.

i originally suggested a setting that would stop this misbehavior, and
give me both.  it's not an ideal solution, but it stops line moves
from being disruptive without sacrificing the ^A respect for the
boundary.  richard suggested instead seeking refinements to the
fields/line-move model that would extend it to accomodate my concerns.
i think the model extension that he suggested (and that you are
accepting, below) does that.  moreover, i think this extension fixes a
deficiency in the model.

to me, the bug or feature question is, is my content/structure
demarcation for ^A a misuse of fields?  if so, then i'm asking for a
new fields feature.  if not (and i think not), then i'm asking for a
fix in the fields model.

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.

thanks - i think this will work well for my purposes.

--
ken
address@hidden
http://myriadicity.net




reply via email to

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