GNU bug report logs - #18545
24.4.50: Bug - forward-line inside with-selected-window

Previous Next

Package: emacs;

Reported by: lompik <at> voila.fr

Date: Wed, 24 Sep 2014 13:40:02 UTC

Severity: normal

Found in version 24.4.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #119 received at 18545 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lompik <at> voila.fr, 18545 <at> debbugs.gnu.org
Subject: Re: bug#18545: 24.4.50: Bug - forward-line inside with-selected-window
Date: Sun, 28 Sep 2014 11:33:36 +0200
>> But after 28 times point moves which is even less understandable.
>
> I don't think this is relevant.  It could be related to
> blink-cursor-mode

... always turned off here ...

> or some other feature that triggers a more thorough
> redisplay.  (Try typing "M-x", for example.)  The code part that seems
> to be involved in this is an optimization, so when it is not taken,
> you don't see the problem.

OK.  But the only thing I do here is leaning on the <down> button.

> Can you show all the values of MATRIX_ROW_BOTTOM_Y that are examined
> in this loop, after we determine that new_vpos should be 426:
>
> 	  row = MATRIX_FIRST_TEXT_ROW (w->desired_matrix);
> 	  while (MATRIX_ROW_BOTTOM_Y (row) < new_vpos)
> 	    ++row;

Using

	  while (MATRIX_ROW_BOTTOM_Y (row) < new_vpos)
	    {
	      ++row;
	      Vdebug_on_message = Fcons (Fcons (make_number (row->y), make_number (new_vpos)),
					 Vdebug_on_message);
	    }

and nreverse on the value of Vdebug_on_message gets me a repeated
pattern of

(32 . 426) (48 . 426) (64 . 426) (80 . 426) (96 . 426) (112 . 426) (128
. 426) (144 . 426) (160 . 426) (176 . 426) (192 . 426) (208 . 426) (224
. 426) (240 . 426) (256 . 426) (272 . 426) (288 . 426) (304 . 426) (320
. 426) (336 . 426) (352 . 426) (368 . 426) (384 . 426) (400 . 426) (416
. 426)

>> I don't
>> understand cursor_row_fully_visible_p much.
>
> Which part of it do you not understand?

Why it should return 1 in these two cases

  if (!MATRIX_ROW_PARTIALLY_VISIBLE_P (w, row))
    return 1;

and

  if (row->height >= window_height)
    {
      if (!force_p || MINI_WINDOW_P (w)
	  || w->vscroll || w->cursor.vpos == 0)
	return 1;
    }

martin




This bug report was last modified 10 years and 237 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.