Subject: bug#77906: 31.0.50; php-js-mode and js-ts-mode: treesit-show-paren-data--categorize: peculiar error: ("Cannot find the definition of the predicate in `treesit-thing-settings'" list)

From: Juri Linkov <[email-masked]>
Date: Sun, 20 Apr 2025 09:19:18 +0300

> both php-ts-mode and js-ts-mode show the same error. It is similar to bug 
> #75456. It was fixed by me at the time, for js-ts-mode, with a patch to 
> js--treesit-language-at-point. The problem arises when there are languages 
> other than the main language in the buffer.
> The following snippet shows the problem, just put the cursor at the end of the 
> comment (jsdoc parser required):
>
> function MyBigFunc(param1,
>                    param2) {
>     const abc = 'def';
> }
> /**
>  * Rapresent
>  * @param {int} a dada
>  */| <-- cursor here
> var variablename = function(a) {
>     console.log("text"); // dada
>     /** dada */
>     // dada
> };
>
> With php it is even worse because of the number of embedded languages.
>
> Any idea?

I noticed the same problem that the end of a range
unexpectedly belongs to its host that breaks many things
such as navigation to the start of the embedded root node
from its end.  Instead it uses the host node.

Maybe point at the end of the range should belong
to the embedded parser?