GNU bug report logs -
#41793
`comment-only-p' erroneously flags blank lines as comments
Previous Next
Full log
View this message in rfc822 format
On Wed, Jun 10, 2020 at 06:53:31PM +0100, Toby Cubitt wrote:
> In GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.16)
> of 2020-04-28
>
> On the following text, with point at |
> (comment-only-p (point) (1+ (point)))
> returns t when it should probably return nil:
>
> "
> |
>
> test"
>
> This impacts commands like `comment-or-uncomment-region'.
>
> This is because the current implementation of `comment-only-p' fails to check the return value of (comment-forward):
>
> The correct implementation should probably be:
[snip]
Gah. That attempt breaks flagging of comments separated by whitespace-only lines. Maybe this?
(defun comment-only-p (beg end)
"Return non-nil if the text between BEG and END is all comments."
(if (string-blank-p (buffer-substring beg end)) nil
(save-excursion
(goto-char beg)
(comment-forward (point-max))
(<= end (point)))))
This fix successfully makes `comment-or-uncomment-region' call `comment-region' when fed empty lines, instead of calling `uncomment-region' (which seems wrong).
It doesn't fix the main issue I was trying to address, namely that `comment-or-uncomment-region' fails to comment out a region consisting only of blank lines, even when `comment-empty-lines' is t. Without the above fix, it calls `uncomment-region' which does nothing as there's nothing to comment. With the above fix, it calls `comment-region'. But the latter refuses to comment out the lines, throwing a "Nothing to comment" error.
Fixing that (assuming it's considered a bug) would require more changes to `comment-region-default' and `comment-region-internal'.
The use-case for this was editing a LaTeX document, where empty lines are semantically significant (they demark paragraph breaks). It's fairly common (especially when editing co-authored documents) to comment out the empty lines in order to run two paragraphs together, whilst keeping the commented-out empty lines in the source so it's easy to revert.
Best,
Toby
--
Dr T. S. Cubitt
Reader (Associate Professor) in Quantum Information
Royal Society University Research Fellow
Department of Computer Science
University College London
email: tsc25 <at> cantab.net
web: www.dr-qubit.org
This bug report was last modified 3 years and 14 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.