unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Ankit Gadiya via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Dmitry Gutov <dmitry@gutov.dev>, 69562@debbugs.gnu.org
Subject: bug#69562: 29.2.50; go-ts-mode does not handle comments with fill-paragraph
Date: Wed, 6 Mar 2024 10:52:49 +0530	[thread overview]
Message-ID: <CAN7zea2EcB0b61Ctkr=da_T7y=y6tb+7S4YMM8ojLhLA6=UfAQ@mail.gmail.com> (raw)
In-Reply-To: <9078f92b-f567-42ce-8539-30eb7d097828@gutov.dev>

On Tue, 5 Mar 2024 at 20:19, Dmitry Gutov <dmitry@gutov.dev> wrote:
>
> Please keep the bug address in Cc. The bug tracker does not forward the
> messages to others or save them in history otherwise.
>
Noted, thank you.

> On 05/03/2024 16:22, Ankit Gadiya wrote:
> >> Does you example originally have one long commented line? Because when I
> >> try it that way, filling seems to work fine, comments are added on the
> >> new lines.
> >
> > Yes, I think the lines got wrapped in the mail but I had a long line. Admittedly
> > that sample is specifically to showcase the issue but a more realistic scenario
> > is when I already have multiline comments, I update it and want to re-fill
> > it. Here also, it is clear that fill-paragraph does not respect the comment
> > delimiter so it moves them just like regular characters.
> >
> > (all comment lines start with // in case mail adds line breaks)
> >
> >      // Sample is a sample function with a very long comment. Sample is a
> >      // new details added to the comment sample function with a very
> > long comment. Sample is a sample function
> >      // with a very long comment. Sample is a sample function with a very long
> >      // comment.
> >      func Sample() {
> >
> >      }
> >
> > Becomes this
> >
> >      // Sample is a sample function with a very long comment. Sample is a // new
> >      details added to the comment sample function with a very long
> > comment. Sample is
> >      a sample function // with a very long comment. Sample is a sample
> > function with
> >      a very long // comment.
> >      func Sample() {
> >
> >      }
>
> That's odd: here it becomes
>
>    // Sample is a sample function with a very long comment. Sample is a
>    // new details added to the comment sample function with a very long
>    // comment. Sample is a sample function with a very long
>    // comment. Sample is a sample function with a very long comment.
>    func Sample() {
>
>    }
>
> > I was able to reproduce it by running `emacs -Q` and manually enabling
> > go-ts-mode in the go file. Please note that in the `go-mode` ELPA package it
> > used to work as it defines its own fill-paragraph function. So possibly that
> > function might be triggered for you if you have that configured?
>
> I've also tried with 'emacs -Q', both the emacs-29 branch and master.
>
> The version you included in the bug report (ae80192d97b8d0e54a94290) is
> very recent, so there can't be any commits that changed things since.
>
> Are you testing in the same Emacs as the one you filed the bug report in?
>

Yes, I only have one Emacs version installed on my system and I'm currently
tracking the emacs-29 branch (last compiled maybe a week ago). I tried enabling
`debug-on-entry` for the `fill-paragraph` function. Here is the
Backtrace if it's
useful. I think beyond this it goes into lower level buffer manipulation
functions.


  current-left-margin()
* move-to-left-margin()
* forward-paragraph(1)
* fill-forward-paragraph(1)
* fill-region(17 269 nil)
* #f(compiled-function (&optional justify region) "Fill paragraph at
or after point.\n\nIf JUSTIFY is non-nil (interactively, with prefix
argument), justify as well.\nIf `sentence-end-double-space' is
non-nil, then period followed by one\nspace does not end a sentence,
so don't break a line there.\nThe variable `fill-column' controls the
width for filling.\n\nIf `fill-paragraph-function' is non-nil, we call
it (passing our\nargument to it), and if it returns non-nil, we simply
return its value.\n\nIf `fill-paragraph-function' is nil, return the
`fill-prefix' used for filling.\n\nThe REGION argument is non-nil if
called interactively; in that\ncase, if Transient Mark mode is enabled
and the mark is active,\ncall `fill-region' to fill each of the
paragraphs in the active\nregion, instead of just filling the current
paragraph." (interactive #f(compiled-function () #<bytecode
0x11237b10c59aec8e>)) #<bytecode -0xb45f5d20aa35b1f>)(nil t)
* apply(#f(compiled-function (&optional justify region) "Fill
paragraph at or after point.\n\nIf JUSTIFY is non-nil (interactively,
with prefix argument), justify as well.\nIf
`sentence-end-double-space' is non-nil, then period followed by
one\nspace does not end a sentence, so don't break a line there.\nThe
variable `fill-column' controls the width for filling.\n\nIf
`fill-paragraph-function' is non-nil, we call it (passing
our\nargument to it), and if it returns non-nil, we simply return its
value.\n\nIf `fill-paragraph-function' is nil, return the
`fill-prefix' used for filling.\n\nThe REGION argument is non-nil if
called interactively; in that\ncase, if Transient Mark mode is enabled
and the mark is active,\ncall `fill-region' to fill each of the
paragraphs in the active\nregion, instead of just filling the current
paragraph." (interactive #f(compiled-function () #<bytecode
0x11237b10c59aec8e>)) #<bytecode -0xb45f5d20aa35b1f>) (nil t))
* fill-paragraph(nil t)
  funcall-interactively(fill-paragraph nil t)
  call-interactively(fill-paragraph record nil)
  command-execute(fill-paragraph record)
  execute-extended-command(nil "fill-paragraph" "fill-pa")
  funcall-interactively(execute-extended-command nil "fill-paragraph" "fill-pa")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

> > Today @stebalien@emacs.ch suggested to set adaptive-fill-regexp for go-ts-mode
> > and that solved it for me (if this is useful).
> >
> >      (setq-mode-local go-ts-mode adaptive-fill-regexp "[ \t]*//+[ \t]*")
>
> TBH I'm not yet sure what the value of this variable should look like.
> But if I manage to reproduce the bug on my machine, this will be the
> next thing we can try, thanks.

I also tried pulling the latest grammar for go and it's still
reproducing on my machine.





  parent reply	other threads:[~2024-03-06  5:22 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-05  8:41 bug#69562: 29.2.50; go-ts-mode does not handle comments with fill-paragraph Ankit Gadiya via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-05 12:44 ` Eli Zaretskii
2024-03-05 13:03 ` Dmitry Gutov
     [not found]   ` <CAN7zea2d+Ku3YG6hw9xw1xKRkkomf7pji8JArZskHbJ2CwZOGw@mail.gmail.com>
2024-03-05 14:49     ` Dmitry Gutov
2024-03-05 15:49       ` Eli Zaretskii
2024-03-05 18:59         ` Dmitry Gutov
2024-03-06  5:22       ` Ankit Gadiya via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2024-03-07  1:57         ` Dmitry Gutov
2024-03-07  8:58           ` Ankit Gadiya via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-07  9:38             ` Eli Zaretskii
2024-03-07 10:18               ` Ankit Gadiya via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found]               ` <CAN7zea13N9xgVLzQAFUiZiiVajB1vzQmh=vbaWOW97VKvL71Ww@mail.gmail.com>
2024-03-07 10:55                 ` Eli Zaretskii
2024-03-07 11:13                   ` Ankit Gadiya via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-07 14:15                     ` Dmitry Gutov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAN7zea2EcB0b61Ctkr=da_T7y=y6tb+7S4YMM8ojLhLA6=UfAQ@mail.gmail.com' \
    --to=bug-gnu-emacs@gnu.org \
    --cc=69562@debbugs.gnu.org \
    --cc=ankit@argp.in \
    --cc=dmitry@gutov.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).