bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#61235: 30.0.50; tree-sit: `treesit-node-check' lacks a way to tell i


From: Yuan Fu
Subject: bug#61235: 30.0.50; tree-sit: `treesit-node-check' lacks a way to tell if a node belongs to a deleted parser
Date: Tue, 7 Feb 2023 19:54:03 -0800


> On Feb 7, 2023, at 4:24 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Mon, 6 Feb 2023 20:55:38 -0800
>> Cc: Mickey Petersen <mickey@masteringemacs.org>,
>> 61235@debbugs.gnu.org
>> 
>>>>> Yuan, any reason not to extend treesit-node-check instead?
>>>> 
>>>> I did extend treesit-node-check in the patch. But I also added a function 
>>>> treesit-parser-live-p, which makes the same check but directly on a 
>>>> parser. It just made sense to me that if we let treesit-node-check check 
>>>> the nodes’ parser’s status, we’d also add a function to allow directly 
>>>> checking the status of a parser.
>>> 
>>> That additional function would signal an error in the case discussed
>>> here, so I'm not sure we should add it in that shape, or at all.  Why
>>> isn't treesit-node-check enough?
>> 
>> Oops, it shouldn’t have. The updated patch fixes that. Treesit-node-check is 
>> enough, it just made more sense implentattion-wise, to implement that 
>> function that checks a parser, and let treesit-node-check use that function 
>> to check the node’s parser. We can choose to not expose that function, and 
>> only expose this feature through treesit-node-check, if you prefer so.
> 
> I think treesit-node-check alone should be enough.

Cool, I’ll only modify treesit-node-check, then.

> 
> One comment:
> 
>> @@ -1943,9 +1959,11 @@ DEFUN ("treesit-node-check",
>>     result = ts_node_is_extra (treesit_node);
>>   else if (EQ (property, Qhas_error))
>>     result = ts_node_has_error (treesit_node);
>> +  else if (EQ (property, Qlive))
>> +    result = Ftreesit_parser_live_p (XTS_NODE (node)->parser);
> 
> Ftreesit_parser_live_p returns a Lisp object, whereas 'result' is a C
> 'bool' type.  This won't compile if you configure with
> "--enable-check-lisp-object-type”.

Right, sorry :-(

Yuan






reply via email to

[Prev in Thread] Current Thread [Next in Thread]