emacs-devel
[Top][All Lists]
Advanced

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

address@hidden: Re: bug#193:] Horrible mangling of fill-paragraph


From: Alan Mackenzie
Subject: address@hidden: Re: bug#193:] Horrible mangling of fill-paragraph
Date: Sun, 27 Nov 2011 10:59:03 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Hi, Stefan and everybody else.

Bug #193 (summarised in detail below) was a mismatch introduced by an
addition to `fill-paragraph' (revision 48193) made by Stefan.  This
concatenates comment-start onto paragraph-start, which fouls up M-q in C
Mode.

The "solution" at the time was to bypass fill-paragraph and use
fill-region-as-paragraph directly.  Unfortunately, this renders
filladapt mode[*] unworkable.

[*] Kyel E. Jones improved adaptive fill, available at
www.wonderworks.com or the CC Mode website.

My current "solution" to both these problems is a "corrected" version of
fill-region inside CC Mode together with an eval-after-load to put it
into filladapt mode.  This is needed for stand-alone CC Mode, but is
suboptimal for Emacs 24.

Stefan, can you remember the use case for rev 48193?  If not, would it
be OK to revert that bit of it?

-- 
Alan Mackenzie (Nuremberg, Germany).


----- Forwarded message from Alan Mackenzie <address@hidden> -----

Date: Tue, 6 Jul 2010 19:29:34 +0000
To: Deniz Dogan <address@hidden>
From: Alan Mackenzie <address@hidden>
Cc: address@hidden, Stefan Monnier <address@hidden>, address@hidden
Subject: Re: bug#193:

On Sun, Jun 27, 2010 at 02:47:52PM +0200, Deniz Dogan wrote:
> Did anyone ever agree on what needs to be done to fix the problem?
 
A quick reminder of what the problem is.  In C mode (NOT C++ mode):
(i) Type M-q in a pair of short line comments like this

// Two short
// lines.

The command ought to join them into a single line comment.  Instead, it
does nothing;

(ii) Type M-q in a line comment which is longer than fill-column:

// A long line comment, which is far far far longer than a moderately or very 
small fill-column.

This miss-fills by splitting the line, but putting no comment marker on
the new second line:.

// A long line comment, which is far far far longer than a moderately or
very small fill-column.

These bugs are regressions between Emacs 21.4 and 22.1.

#########################################################################

Both these bugs seem to be caused by a strange clause in
`fill-paragraph', where what should be the fill-prefix ("// ") is made
a component of `paragraph-start'.  Thus (ii) every line in the comment
sequence is automatically made into its own paragraph; and (i) when
splitting lines, fill-paragraph doesn't insert the fill-prefix when this
is also a paragraph starter.

Here is the strange code:

     ;; Try to prevent code sections and comment sections from being
     ;; filled together.
     (when (and fill-paragraph-handle-comment comment-start-skip)
       (setq paragraph-start
             (concat paragraph-start "\\|[ \t]*\\(?:"
                     comment-start-skip "\\)")))

In C Mode, `comment-start-skip' is "\\(//+\\|/\\*+\\)\\s *".

The two bugs vanish when the above code is removed.

Stefan, can you remember why you put this code in (revision 48193 of
2008-04-11)?  Is there perhaps a way of achieving the same effect
without making the fill-prefix match `paragraph-start'?

> -- 
> Deniz Dogan

-- 
Alan Mackenzie (Nuremberg, Germany).


----- End forwarded message -----



reply via email to

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