Subject: Re: bug#77369: typescript-ts-mode's defun definition is wrong

From: Yuan Fu <[email-masked]>
Date: Sat, 29 Mar 2025 21:21:05 -0700

> On Mar 29, 2025, at 11:17 AM, Daniel Colascione <[email-masked]> wrote:
> 
> Not sure whether this is a bug or just surprising design, but in this
> code:
> 
>    function Blah(foo) {
>      const foo = 1;
>      const bar = 2;
>    }
> 
> with point on "const foo", I do not expect end-of-defun to go to "const
> bar".  I expect it to go to the closing curly brace.

Yeah, that’s because const foo = 1; is a “lexical_declaration”, which is considered a defunct in typescript-ts-mode, because in js you can have arrow functions like

const Blah = (foo) => {
  return true;
};

Which is also a “lexical_declaration”. I guess we can refine the pattern matching to check if it’s an arrow function and only then consider it a defun.

I did that, now on latest master, end-of-defun should move to the end of the function in your example.

Yuan