GNU bug report logs - #70074
29.1; js-ts-mode doesn't define comment-line-break-function

Previous Next

Package: emacs;

Reported by: Evan Davis <davis.evan.m <at> gmail.com>

Date: Fri, 29 Mar 2024 16:03:02 UTC

Severity: normal

Found in version 29.1

Done: Yuan Fu <casouri <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Yuan Fu <casouri <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: dmitry <at> gutov.dev, 70074 <at> debbugs.gnu.org, davis.evan.m <at> gmail.com
Subject: bug#70074: 29.1; js-ts-mode doesn't define comment-line-break-function
Date: Sun, 21 Apr 2024 21:35:24 -0700

> On Apr 20, 2024, at 12:44 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> Ping!  Yuan, can we make some progress here?
> 
>> From: Yuan Fu <casouri <at> gmail.com>
>> Date: Mon, 8 Apr 2024 00:10:32 -0700
>> Cc: Eli Zaretskii <eliz <at> gnu.org>,
>> Evan Davis <davis.evan.m <at> gmail.com>,
>> 70074 <at> debbugs.gnu.org
>> 
>> 
>> 
>>> On Apr 4, 2024, at 5:28 PM, Dmitry Gutov <dmitry <at> gutov.dev> wrote:
>>> 
>>> On 04/04/2024 15:32, Eli Zaretskii wrote:
>>>>> From:Evan Davis<davis.evan.m <at> gmail.com>
>>>>> Date: Fri, 29 Mar 2024 11:03:10 -0400
>>>>> 
>>>>> js-ts-mode and js-mode behave differently when calling default-indent-new-line (M-j) within a multiline
>>>>> comment.
>>>>> 
>>>>> Observed behavior:
>>>>>  - in js-mode, M-j calls c-indent-new-comment-line, which correctly inserts a newline, indented to the correct
>>>>> column and prefixed with '*'
>>>>>  - in js-ts-mode, M-j calls comment-indent-new-line, which inserts an indented newline without the prefix.
>>>>> 
>>>>> Expected behavior:
>>>>> Block comments should be handled the same in both modes.
>>>>> 
>>>>> Steps to reproduce:
>>>>> 1. emacs -Q
>>>>> 2. open a scratch buffer in js-ts-mode and enter text (without quotes) "/*"
>>>>> 3. press M-j
>>>>> 4. observe newline is created without star prefix
>>>>> 
>>>>> Follow the same steps in js-mode to observe the desired behavior.
>>>> Dmitry, Yuan: any comments or suggestions?
>>> 
>>> I suppose following in js-mode's footsteps and reusing this part of CC Mode is the obvious solution.
>>> 
>>> I haven't looked at the implementation closely enough to suggest something else, but it'd of course be nice to be able to provide a self-contained, shorter re-implementation instead.
>> 
>> Sounds good. I wasn’t aware of this command before. Let me add it to c-ts-common.el.
>> 
>> Yuan

I looked at the implementation of c-indent-new-comment-line, it’s 178 lines of complicated control flow, handling all sorts of edge cases that I don’t understand. Sadly it’s pretty keeping coupled with the whole cc framework, so it’ll be pretty hard to take it out and reuse for c-ts-common.el.

So I added a new function c-ts-common-comment-indent-new-line. It’s probably nothing compare to c-indent-new-comment-line’s capabilities, but it can at least handle the usual cases that I can think of: indenting after //, after /*, after * inside a block comment, and after | inside a block comment.

For more advanced use-cases, we can wait until someone asks for them.

Evan, if you pull the latest master, M-j should now just work for js-ts-mode.

Yuan



This bug report was last modified 1 year and 90 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.