Subject: bug#74056: `LaTeX-insert-item' inserts comment characters if called from inside comment

From: Vangelis Evangelou <[email-masked]>
Date: Mon, 28 Oct 2024 17:15:00 +0000

Correction: Instead of `LaTeX-newline' use `newline'. In my original
message I said to use `TeX-newline'. So the proposal is
(unless (string-match-p "^[[:blank:]]*$" (buffer-substring-no-properties
(line-beginning-position) (line-end-position))) (newline))

On Mon, 28 Oct 2024 at 09:40, Vangelis Evangelou <[email-masked]>
wrote:

> Hello.
>
> Consider the following latex snippet with the cursor position indicated by
> |:
>
> \begin{itemize}
> \item My 1st item %%% comment |
> \end{itemize}
>
> At that point call `LaTeX-insert-item' (M-RET) to get the following:
>
> \begin{itemize}
> \item My 1st item %%% comment
>   %%% \item |
> \end{itemize}
>
> while I would have expected
>
> \begin{itemize}
> \item My 1st item %%% comment
> \item |
> \end{itemize}
>
> I cannot think of a situation where the current version is desirable.
>
> This happens because `LaTeX-insert-item' inserts a new line using
> `LaTeX-newline' instead of `TeX-newline.
>
> In addition to the above, `LaTeX-insert-item' always inserts a new line
> unless the cursor is at the beginning of line:
>
> (unless (bolp) (LaTeX-newline))
>
> This is rarely the case. For example, if you enter a new line inside
> itemize, the line is indented. It would be better to replace the (bolp)
> check with a check that the line contains only whitespace characters. So my
> proposal is to replace the above line with
>
> (unless (string-match-p "^[[:blank:]]*$" (buffer-substring-no-properties
> (line-beginning-position) (line-end-position))) (TeX-newline))
>