[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49946] [PATCH v4 00/31] gnu: Add tree-sitter for emacs.
From: |
Pierre Langlois |
Subject: |
[bug#49946] [PATCH v4 00/31] gnu: Add tree-sitter for emacs. |
Date: |
Fri, 18 Feb 2022 14:12:08 +0000 |
User-agent: |
mu4e 1.6.10; emacs 27.2 |
Hi Guix!
Here's a v4 that's in a pretty good shape IMO. Here's a summary of the
changes compared to previous versions, there were lots actually! :-)
- Removed bundled icu4c headers from `tree-sitter', as pointed out on
https://issues.guix.gnu.org/53523.
- Added a snippet that removes all files generated by the
`tree-sitter generate' command, to be used in all grammar packages.
- For each grammar package, provide two outputs:
* "out": With just the compiled grammar.
--8<---------------cut here---------------start------------->8---
/gnu/store/mb2hcaanm6ld8rx19p1ihk2fs1m7lcj8-tree-sitter-c-0.20.1
├── lib
│ └── tree-sitter
│ └── c.so
└── share
└── doc
└── tree-sitter-c-0.20.1
└── LICENSE
--8<---------------cut here---------------end--------------->8---
* "js": With the JS package output, so that it may be used as a
dependency. For example C++ imports the C grammar, and Typescript
imports JavaScript.
- Removed the dependency on node-gyp!
By default, the `npm' build system builds JavaScript bindings for each
grammar, so that node applications may use them as a library to parse
a given language. We don't need this yet in Guix, we just want to
generate C code from the JS grammar description and compile it.
So when invoking `tree-sitter generate', we disable bindings
generation and then we ignore all custom scripts when installing the
JS package. This simplifies grammar packages a *lot*, given those
custom script often try to download binaries and would have had to be
patched.
- Grammars are compiled manually.
Previous versions relied on doing `tree-sitter test' so that a grammar
would be loaded and compiled by `tree-sitter' into its own cache. We
would then install the library from that cache location, which can
change across versions.
This felt like a hack, looking at the source code, we're just
compiling a couple of files at most, we can do that ourselve.
- I added support for a few extra languages, like ruby, C#, elixir and
ocaml.
- Last but very much not least, tests for emacs-tree-sitter-langs are
enabled!
This is important because this package doesn't just bundle all the
grammars, it also provides custom highlighting rules, which depend on
the grammar and can easily be out-of-sync and break. Thanks to
enabling these tests, I realized the php grammar need updating and
didn't work for example.
Let me know if you have any feedback on this series! It's taking me
quite some time to follow it through, it's not the easiest thing to
package :-/.
I do wonder if I'm going about it the right way for Guix though, for
instance I'm wondering if I should rewrite the grammar packages using a
new custom build system, do people think it would be worth it? That
could be done as a follow-up of course.
Thanks,
Pierre
Pierre Langlois (31):
gnu: Add rust-smallbitvec.
gnu: Add rust-html-escape.
gnu: Add rust-spin@0.7.
gnu: Add tree-sitter.
gnu: Add tree-sitter-cli.
gnu: Add tree-sitter-c.
gnu: Add tree-sitter-cpp.
gnu: Add tree-sitter-bash.
gnu: Add tree-sitter-css.
gnu: Add tree-sitter-c-sharp.
gnu: Add tree-sitter-elixir.
gnu: Add tree-sitter-elm.
gnu: Add tree-sitter-go.
gnu: Add tree-sitter-html.
gnu: Add tree-sitter-java.
gnu: Add tree-sitter-javascript.
gnu: Add tree-sitter-json.
gnu: Add tree-sitter-julia.
gnu: Add tree-sitter-ocaml.
gnu: Add tree-sitter-php.
gnu: Add tree-sitter-python.
gnu: Add tree-sitter-ruby.
gnu: Add tree-sitter-rust.
gnu: Add tree-sitter-typescript.
gnu: Add rust-tree-sitter-for-emacs.
gnu: rust-emacs-module: Update to 0.18.
gnu: rust-emacs-macros: Update to 0.17.
gnu: rust-emacs: Update to 0.18.
gnu: Add emacs-tree-sitter-core.
gnu: Add emacs-tree-sitter.
gnu: Add emacs-tree-sitter-langs.
gnu/local.mk | 2 +
gnu/packages/crates-io.scm | 154 ++-
.../rust-tree-sitter-text-provider-fix.patch | 98 ++
gnu/packages/tree-sitter.scm | 1088 +++++++++++++++++
4 files changed, 1324 insertions(+), 18 deletions(-)
create mode 100644
gnu/packages/patches/rust-tree-sitter-text-provider-fix.patch
create mode 100644 gnu/packages/tree-sitter.scm
--
2.34.0
signature.asc
Description: PGP signature
- [bug#49946] [WIP PATCH v3 22/26] gnu: rust-emacs-macros: Update to 0.17., (continued)
- [bug#49946] [WIP PATCH v3 22/26] gnu: rust-emacs-macros: Update to 0.17., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 24/26] gnu: Add emacs-tree-sitter-core., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 02/26] gnu: Add rust-html-escape., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 17/26] gnu: Add tree-sitter-python., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 18/26] gnu: Add tree-sitter-rust., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 21/26] gnu: rust-emacs-module: Update to 0.18., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 19/26] gnu: Add tree-sitter-typescript., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 26/26] gnu: Add emacs-tree-sitter-langs., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 23/26] gnu: rust-emacs: Update to 0.18., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 25/26] gnu: Add emacs-tree-sitter., Pierre Langlois, 2022/02/10
- [bug#49946] [PATCH v4 00/31] gnu: Add tree-sitter for emacs.,
Pierre Langlois <=
- [bug#49946] [PATCH v4 01/31] gnu: Add rust-smallbitvec., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 03/31] gnu: Add rust-spin@0.7., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 02/31] gnu: Add rust-html-escape., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 08/31] gnu: Add tree-sitter-bash., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 09/31] gnu: Add tree-sitter-css., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 14/31] gnu: Add tree-sitter-html., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 05/31] gnu: Add tree-sitter-cli., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 04/31] gnu: Add tree-sitter., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 10/31] gnu: Add tree-sitter-c-sharp., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 07/31] gnu: Add tree-sitter-cpp., Pierre Langlois, 2022/02/18