David Kastrup <[EMAIL PROTECTED]> writes:

> With -fno-crossjumping, the real assert came to light.
>
> It is xdisp.c in line 6122:
>
>   /* The function move_it_vertically_backward may move over more
>      than the specified y-distance.  If it->w is small, e.g. a
>      mini-buffer window, we may end up in front of the window's
>      display area.  Start displaying at the start of the line
>      containing PT in this case.  */
>   if (it.current_y <= 0)
>     {
>       init_iterator (&it, w, PT, PT_BYTE, NULL, DEFAULT_FACE_ID);
>       move_it_vertically_backward (&it, 0);
>       xassert (IT_CHARPOS (it) <= PT);
>       it.current_y = 0;
>     }
>
> I suppose that the reseat_1 in move_it_vertically_backward will move
> forward again.  Something like that.

True.  This can happen if PT is invisible text or in text that is
replaced by an image.  I guess it is related to a bug that I still
have to investigate (see below).

I think you can safely disable the xassert with #if 0 for now.


The bug reveals itself like this:

Suppose you have a window with this context

abc
[     ]
[IMAGE]xyz
[     ]
def

Now, if you place the cursor at 'z' and hit C-a, it moves to 'x'.
Also, M-: (bolp) returns t at that position.

I haven't fully debugged this, but it seems to happen when the text
overlayed by the IMAGE includes or ends with a newline.

-- 
Kim F. Storm <[EMAIL PROTECTED]> http://www.cua.dk



_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to