| SU | MO | TU | WE | TH | FR | SA |
|---|---|---|---|---|---|---|
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
EmacsでJSX,TSXを書くのには、tree-sitterを使うのが良いと聞いていたが、使ったことなかった。
Emacs 29以降でビルトインになってるのでそれを使ってる。
Emacs 29以降からpackage installをしなくても良くなっている。
ただし、namespaceが重複しないように、treesit-*になっている。
パッケージのほうのemacs-tree-sitter.elとはAPIが若干違ってるっぽい。
tree-sitterは各言語の文法バイナリが無いと動かない。
MELPAのtree-sitter-langsをインストールすると、ある程度の言語の文法バイナリを落としてくれる。
あとは、これをtreesit-*が見てくれるところに置けばいいのだが、どうも設定する変数がない。
仕方がないので、パスの通ったところに置くこととした。
加えて、MELPAのtree-sitter-langsで提供されるバイナリの名前と、treesit-*の参照する名前に差があって、そのままでは使えない。tree-sitter-langsからとれるバイナリの名前は、言語名から始まってるので、libtree-sitter-<言語名>に変更すると読んでくれるようになった。
treesit-language-source-alistに言語名とGithubのリポジトリURLを設定して、
treesit-install-language-grammarでインストールするというの方法も用意されている。
詳しくはこちらを参照。
しかし、実行にはCコンパイラが必要的なエラー出たので使っていない。
Scoop.shとかにもこういったパッケージなさげなので、この作業の自働化は難しそう。
Emacs 29以降ではLanguage Server Protocolのクライアントとしてeglotがビルトインされてるらしいので、それも使ってみようと思う。
この辺を参考にしてみる。