Subject: Re: bug#60559: 29.0.60; "Cannot activate tree-sitter" spam

From: Eli Zaretskii <[email-masked]>
Date: Thu, 05 Jan 2023 11:00:31 +0200

> Date: Thu, 05 Jan 2023 08:48:11 +0000
> From: Gregory Heytings <[email-masked]>
> cc: Fu Yuan <[email-masked]>, [email-masked], 
>     Theodor Thornhill <[email-masked]>, [email-masked], 
>     Jostein Kjønigsen <[email-masked]>, 
>     Stefan Monnier <[email-masked]>, 
>     Lars Ingebrigtsen <[email-masked]>, [email-masked]
> 
> > I suggest a slightly different solution: add a global minor mode, say 
> > 'ts-modes'.  Users would only have to add (ts-modes 1) in their init 
> > files, and the logic would be:
> >
> > (treesit-available-p) ts-modes
> > nil                   nil      => do nothing
> > nil                   t        => warning
> > t                     nil      => use available tree-sitter modes
> > t                     t        => use available tree-sitter modes
> >
> > This seems more future-proof: otherwise users who want to user the 
> > available tree-sitter modes would have to require all such modes.  ATM 
> > there are only 19, but Emacs 30 could very well have twice or thrice 
> > that number of tree-sitter modes.
> 
> And perhaps we could even add a third value for ts-modes, say "no".  In 
> that case tree-sitter modes would not be used even if they are available. 
> Users may prefer, for one reason or another, to not use them even if they 
> are available because their system administrator installed them.

We discussed a minor mode approach, and discovered it doesn't work
well enough, because different modes need different considerations.

Moreover, silently doing something depending on whether
treesit-available-p returns nil is not the best UX, as I explained
up-thread.  Actually loading a mode that the user wants is much more
natural and easy.

P.S. Please disregard the previous email about customizing a list: I
was confused when I wrote it.