Subject: bug#20663: page.el (forward-page): Avoid skipping pages

From: Marcin Borkowski <[email-masked]>
Date: Mon, 02 May 2016 22:42:26 +0200

On 2016-04-27, at 09:57, Pierre Neidhardt <[email-masked]> wrote:

> On 16-04-20 09:32:37, Marcin Borkowski wrote:
>> And by the way, the patch the OP gave is also wrong, though in
>> a different way.  (I should have noticed that earlier.)  The OP proposed
>> this instead of (if (bolp) (forward-char 1)):
>> 
>> (if (string= page-delimiter "") (forward-char 1))
>> 
>> Of course, this condition should never be true: if `page-delimiter' is
>> "", functions from page.el will most probably never work correctly
>> anyway.  What (maybe) should have been tested would be
>> 
>> (eq (match-beginning 0) (match-end 0))
>> 
>> but anyway, since Emacs regex engine does not have a lot of zero-width
>> assertions, this is not going to happen very often anyway (certainly
>> never with the default value of `page-delimiter', which explains why the
>> OP hasn't noticed any problems with his patch).  One possible value of
>> `page-delimiter' that comes to my mind which could lead to the above
>> condition holding would be "^$" -- though I can hardly see any practical
>> use for it.
>> 
>> So my proposal would be to just delete the offending line altogether.
>> I'd be very surprised if we heard any complaints afterwards.
>
> Why disallowing "^$" as a page delimiter? I would not use it either, but I can
> fathom that somebody else would. At the end of the day, the page display is like
> colors: a matter of taste. So instead of removing the line, I'd use the
> replacement you suggested.

I'm not saying it should be disallowed.  I'm saying that most probably
it's not very useful, and I'd be surprised if anyone used it.  But
I agree with your suggestion anyway, if only for aesthetical reasons.

>> BTW, the analogous code for moving back one page seems also suspicious
>> to me.  I'll look into it tomorrow.
>
> The code for moving back first skips the page delimiter we are currently on, if
> any. This is not problematic if the page was narrowed down since it is not
> possible to be on the page delimiter at (point-min).
>
> The code looks good to me if we consider that the delimiters belong to the end
> of a page.

I'll try to look at them again.

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University