unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#15004: 24.3; fill-paragraph on perl-mode indented comment at start of buffer
@ 2013-08-01 23:43 Kevin Ryde
  2022-09-21 12:32 ` Mauro Aranda
  0 siblings, 1 reply; 2+ messages in thread
From: Kevin Ryde @ 2013-08-01 23:43 UTC (permalink / raw)
  To: 15004

Starting from emacs -Q,

 (progn
   (switch-to-buffer "xx")
   (erase-buffer)
   (insert " # aa aa\n")
   (insert " # bb bb\n")
   (insert " # cc cc\n")
   (insert " # dd dd\n")
   (goto-char (point-min))
   (perl-mode)
   (fill-paragraph nil))

gives

 # aa aa
 # bb bb cc cc dd dd

whereas I hoped the fill-paragraph would include the first line too,

 # aa aa bb bb cc cc dd dd

The problem is only if the lines are at the start of the buffer.
I noticed this under filladapt which narrows to its desired target
region and fills that.  The problem occurs both at actual start of
buffer and when narrowed.

I couldn't tell where it might go wrong except that it might be related
to perl-mode using comment-start-skip "\\(^\\|\\s-\\);?#+ *" which has a
\\(\\) group to demand preceding whitespace if not at start of line.
If you change it to

  (set (make-local-variable 'comment-start-skip) ";?#+[ \t]*")

then the fill correctly includes the first line.




In GNU Emacs 24.3.1 (i486-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2013-05-29 on blah.blah, modified by Debian
System Description:	Debian GNU/Linux 7.0 (wheezy)

Configured using:
 `configure '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var/lib' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3/site-lisp:/usr/share/emacs/site-lisp'
 '--with-crt-dir=/usr/lib/i386-linux-gnu' '--with-x=yes'
 '--with-x-toolkit=lucid' '--with-toolkit-scroll-bars' '--without-gconf'
 'build_alias=i486-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector
 --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall'
 'LDFLAGS=-Wl,-z,relro -Wl,-znocombreloc'
 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
  value of $LANG: en_AU
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t





^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#15004: 24.3; fill-paragraph on perl-mode indented comment at start of buffer
  2013-08-01 23:43 bug#15004: 24.3; fill-paragraph on perl-mode indented comment at start of buffer Kevin Ryde
@ 2022-09-21 12:32 ` Mauro Aranda
  0 siblings, 0 replies; 2+ messages in thread
From: Mauro Aranda @ 2022-09-21 12:32 UTC (permalink / raw)
  To: 15004; +Cc: Kevin Ryde

Kevin Ryde <user42@zip.com.au> writes:

 > Starting from emacs -Q,
 >
 >  (progn
 >    (switch-to-buffer "xx")
 >    (erase-buffer)
 >    (insert " # aa aa\n")
 >    (insert " # bb bb\n")
 >    (insert " # cc cc\n")
 >    (insert " # dd dd\n")
 >    (goto-char (point-min))
 >    (perl-mode)
 >    (fill-paragraph nil))
 >
 > gives
 >
 >  # aa aa
 >  # bb bb cc cc dd dd
 >
 > whereas I hoped the fill-paragraph would include the first line too,
 >
 >  # aa aa bb bb cc cc dd dd

I can reproduce this on current master.

 > The problem is only if the lines are at the start of the buffer.

Indeed, but that seems to be out of sheer luck: somehow the narrowing
goes from the newline previous to the start of comment when the lines
are not at the start of the buffer.

 > I couldn't tell where it might go wrong except that it might be related
 > to perl-mode using comment-start-skip "\\(^\\|\\s-\\);?#+ *" which has a
 > \\(\\) group to demand preceding whitespace if not at start of line.
 > If you change it to
 >
 >   (set (make-local-variable 'comment-start-skip) ";?#+[ \t]*")
 >
 > then the fill correctly includes the first line.
 >

I don't know why comment-start-skip is set this way in perl-mode.  It
tries to do something more than just match the start of a comment and
skip to the body, and that confuses me.

Maybe it can be simplified to just "#+[ \t]*".  Light testing shows no
problem with doing that.  In fact, by no demanding preceding whitespace,
the following works as expected:

sub foo {
     $bar = shift;#Just testing.
}

With point anywhere inside the function, C-M-q moves the comment to
comment-column.







^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-21 12:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-01 23:43 bug#15004: 24.3; fill-paragraph on perl-mode indented comment at start of buffer Kevin Ryde
2022-09-21 12:32 ` Mauro Aranda

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).