Dmitry Gutov <dgutov@yandex.ru> writes:
clojure-ts-mode keeps a URL for the parser, but doesn't do anything
about the git revision. It easily could but I don't feel the need (yet)
since I am also a maintainer of the clojure grammar and know when we're
about to break grammar consumers.
Sure, that's easy enough to do when the package is only in ELPA: upgrade the
grammar, upgrade the
package, all in lockstep.
Yeah, soon after I sent that email I realized there is no reason for me
not to specify a version for the grammar so I pushed a change doing just
that.
Grammars distributed from distros are more of a problem, because it's not
always a good idea to
abort with "wrong version". But perhaps we could do that and recommend
installing from Git in such
cases anyway?
In some cases, distros might place the grammars in a strange location
made accessible on `treesit-extra-load-path`, which takes precedence
over the grammars that are installed from git in the user's Emacs
directory. This is what nix does, but is probably an outlier. I would
guess more conventional distributions might just make them accessible
where dynamic libraries are normally located and the grammars installed
from git would take precedence.
Another problem is that grammars don't have good versioning, and even if they
did, we'd have to
sometimes update the "upper bound" (we'd need coarse ranges, right? rather that
one fixed version
requirement) more frequently than Emacs is released. Less of a problem for
modes in ELPA, though.
Yeah I think ranges would be right. It would be good to say, we tested
this with versions N through M, anything else might not work. There
would still need to be some checks and patches like what exists in
js-ts-mode now. But that seems unavoidable, but could be cleaner if we
had a good way to ID grammars. Not sure about how we'd keep up with
grammars. Maybe we just can't and would need to have users install older
versions. That seems okay?