emacs-devel
[Top][All Lists]
Advanced

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

Re: Ok, here is the bug I have been looking for. Kim, not Jan...


From: Kim F. Storm
Subject: Re: Ok, here is the bug I have been looking for. Kim, not Jan...
Date: Tue, 01 Mar 2005 09:34:37 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

David Kastrup <address@hidden> 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 <address@hidden> http://www.cua.dk





reply via email to

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