Subject: bug#78003: 31.0.50; comment-indent misbehaves in multiline comments

From: Sean Whitton <[email-masked]>
Date: Wed, 23 Apr 2025 11:17:59 +0800

X-debbugs-cc: [email-masked]

1. emacs -q
2. C-x b foo RET
3. M-x lisp-mode RET
4. Enter this content:
--8<---------------cut here---------------start------------->8---
#|
foo
#|
--8<---------------cut here---------------end--------------->8---
5. Put point after "foo".
6. M-;

The result is an insertion of trailing single-semicolon comment.
As we are already within a comment, this makes no sense.  M-; should
either do nothing, or possibly perform some form of indentation.

We could fix this within comment-dwim.  However, I propose instead to
change comment-indent (or possibly comment-search-forward).
This is because I first encountered this problem not via comment-dwim,
but via how indent-sexp calls comment-indent.

The above recipe with M-; is just the simplest reproducer I found.
Making comment-indent behave better within multiline comments would make
it a more useful function in general and also fix these various
misbehaviours at once.

Other background:

- Possibly indent-sexp needs some adjustment too, but any change to
  comment-indent should come first.

- A similar problem shows up with syntax-propertize-function values
  which set comment-fence syntax-table text properties, which are
  another kind of multiline comment.
  (Came up for me in consfigurator.el's syntax-propertize-function.)

- A similar problem shows up with the literate-scratch library
  Stefan M. and I were discussing over the past few days, where the
  problem is that the library adds a whitespace syntax-table property to
  some trailing newlines such that it is only the second of the two
  newlines following a paragraph which ends the comment.  With point
  between the two newlines, we're still in a comment, but comment-indent
  doesn't think so.

-- 
Sean Whitton