emacs-devel
[Top][All Lists]
Advanced

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

Re: filling bug in text-mode


From: Juri Linkov
Subject: Re: filling bug in text-mode
Date: Fri, 14 Oct 2005 14:42:12 +0300
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux)

> We're talking about what sentence-end should match; that is to say,
> where M-e should stop.
>
> It should stop after an ellipsis if the ellipsis is followed by two
> spaces or a newline.  An ellipsis followed by just one space is not
> the end of a sentence.
>
> As for filling, it does not break the line after a period
> followed by one space, because doing so would make it appear
> to be the end of a sentence.

While looking at fixing this, I noticed that there are more cases
where `fill-nobreak-p' doesn't allow breaking at the end of a sentence
(where M-e stops).

For example, filling:

It's not necessary to buy a new computer just for a DVD
drive. . .  Today, the most important part of a computer is the amount
of RAM -- the more, the better.  It's far more important than a fast
CPU.

doesn't break at two spaces between `. . .' and `Today'.  Whereas the
expected result of filling would be:

It's not necessary to buy a new computer just for a DVD drive. . .
Today, the most important part of a computer is the amount of RAM --
the more, the better.  It's far more important than a fast CPU.

There is another example:

It's not necessary to buy a new computer just for a DVD
drive.  . . Today, the most important part of a computer is the amount
of RAM -- the more, the better.  It's far more important than a fast
CPU.

where filling breaks at wrong point, turning this paragraph into:

It's not necessary to buy a new computer just for a DVD drive.  . .
Today, the most important part of a computer is the amount of RAM --
the more, the better.  It's far more important than a fast CPU.

while the expected result should have breaking at two spaces:

It's not necessary to buy a new computer just for a DVD drive.
. . Today, the most important part of a computer is the amount of
RAM -- the more, the better.  It's far more important than a fast CPU.

The patch below fixes these cases as well as the original problem:

Index: lisp/textmodes/fill.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/textmodes/fill.el,v
retrieving revision 1.181
diff -c -r1.181 fill.el
*** lisp/textmodes/fill.el      9 Aug 2005 14:01:29 -0000       1.181
--- lisp/textmodes/fill.el      14 Oct 2005 11:38:09 -0000
***************
*** 344,356 ****
       ;; it at the end of the line.
       (and sentence-end-double-space
          (save-excursion
!           (skip-chars-backward ". ")
!           (looking-at "\\. \\([^ ]\\|$\\)")))
       ;; Another approach to the same problem.
       (save-excursion
!        (skip-chars-backward ". ")
!        (and (looking-at "\\.")
!           (not (looking-at (sentence-end)))))
       ;; Don't split a line if the rest would look like a new paragraph.
       (unless use-hard-newlines
         (save-excursion
--- 344,357 ----
       ;; it at the end of the line.
       (and sentence-end-double-space
          (save-excursion
!           (skip-chars-backward " ")
!           (and (eq (preceding-char) ?.)
!                (looking-at " \\([^ ]\\|$\\)"))))
       ;; Another approach to the same problem.
       (save-excursion
!        (skip-chars-backward " ")
!        (and (eq (preceding-char) ?.)
!           (not (progn (forward-char -1) (looking-at (sentence-end))))))
       ;; Don't split a line if the rest would look like a new paragraph.
       (unless use-hard-newlines
         (save-excursion

-- 
Juri Linkov
http://www.jurta.org/emacs/





reply via email to

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