Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: ZLE and handling of MARK

Bart Schaefer wrote:

> If one sets the mark in zle and then delete characters to the left of it
> by assigning to a slice of $BUFFER in a user-defined widget, the mark
> remains in the same numeric position rather than the same logical position.
> If instead one deletes characters by using the builtin widgets, the mark
> stays in the same logical position (its numeric position changes as the
> line gets shorter).  The two cases should be consistent, no?

Yes, but how? The only `secure' change I can see is to update the
position of the mark if it is in $RBUFFER and only $LBUFFER is
changed. Otherwise we would need some, probably complicated, code to
check how $(|L|R)BUFFER was changed (ok, for deletion/insertion of
characters or short strings from/to the end/beginning of L/RBUFFER
this seems doable).

> One other observation:
> If one sets the mark and then moves around in the history, the mark stays
> at the same numeric position in each recalled line, moving only if a line
> is too short for it to stay in that position AND some reference to the mark
> is made (such as invoking exchange-point-and-mark).  I'm not sure whether
> such behavior makes sense or not ... and if it changes, some functions in
> Functions/Zle will have to change, too.

It's a bit like emacs' line-movement, isn't it?

(I always thought the mark should be either attached to a history line 
so that exchange-p-a-m would toggle between lines, or it should be
per-line. Maybe.)


Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx

Messages sorted by: Reverse Date, Date, Thread, Author