[Top][All Lists]

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

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

From: Marcin Borkowski
Subject: bug#20663: page.el (forward-page): Avoid skipping pages
Date: Wed, 13 Apr 2016 19:53:31 +0200
User-agent: mu4e 0.9.13; emacs

On 2016-04-11, at 15:35, Eli Zaretskii <address@hidden> wrote:

>> From: Marcin Borkowski <address@hidden>
>> Cc: Eli Zaretskii <address@hidden>,  address@hidden
>> Date: Mon, 11 Apr 2016 12:20:07 +0200
>> I spent a few minutes on this with Edebug and Git today.
> Thanks.
>> > - All the patch does it make the code consistent with its comments, that 
>> > is:
>> >
>> >    ;; In case the page-delimiter matches the null string,
>> >    ;; don't find a match without moving.
>> Seems ok.
>> > - If you try the recipe (I just did on Emacs 24.5.1, don't have time to 
>> > check
>> > now on upstream), you'll see that a page gets skipped, which is not the 
>> > desired
>> > behaviour.
>> Condirmed.  And it doesn't happen with the patch installed.
> Can one of you please explain why the original code misbehaves?

Quoting from the original report:

--8<---------------cut here---------------start------------->8---
> Running `emacs -Q example.txt`:
>       M-<
>       C-x n p
>       M->
>       M-1 C-x n p
> This should bring us from page 1 to page 2, but page 3 gets displayed instead.
--8<---------------cut here---------------end--------------->8---

>> For instance, when the point is -!-, is the point on the first or
>> second page here?  Emacs with and without the patch has different
>> opinions on that.
> Good point.

Here's the relevant excerpt from the manual:

--8<---------------cut here---------------start------------->8---
   The variable ‘page-delimiter’ controls where pages begin.  Its value
is a regular expression that matches the beginning of a line that
separates pages (*note Regexps::).  The normal value of this variable is
‘"^\f"’, which matches a formfeed character at the beginning of a line.
--8<---------------cut here---------------end--------------->8---

Is it me or is the above ambiguous?

I'm a bit busy now, but I'll make a second attempt at this issue within
a few days.  One of the problems is that (as the above paragraph seems
to confirm) the very notion of a "page" in Emacs is vague.  IMHO we
should start with a clear definition of a "page".  It is well possible
that different functions in page.el use different interpretations of
this notion, and the bug is just a symptom if such a mess.

My proposal is that a "page separator" would be a position in the buffer
where (looking-at-p page-delimiter) is true, and if point is at such
a place, then we consider it on the next page.  I.e., in this situation


the point is already on the second page (unlike the default Emacs

Then, someone should study page.el and where necessary, update it to the
precisely defined notion of a "page".  (The mythical "someone" might be


Marcin Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University

reply via email to

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