From 13f786a7bec5c725a0a3ff45c63062d03f12bd90 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Sat, 16 Aug 2025 12:13:46 +0100 Subject: [PATCH] Vendor the commonlisp parser again This allows us to use the C library directly. Using the library from crates.io would require a fairly big MSRV bump. https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/issues/45 Essentially reverts 87521ed3fcc393e72b3184f91ffd675247dd5e4a but we still have the latest version of the upstream grammar. Fixes #866 --- build.rs | 5 +++++ src/parse/tree_sitter_parser.rs | 4 ++-- vendored_parsers/tree-sitter-commonlisp-src | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) create mode 120000 vendored_parsers/tree-sitter-commonlisp-src diff --git a/build.rs b/build.rs index cadd1ad7c..af5ca03ec 100644 --- a/build.rs +++ b/build.rs @@ -82,6 +82,11 @@ fn main() { src_dir: "vendored_parsers/tree-sitter-cmake-src", extra_files: vec!["scanner.c"], }, + TreeSitterParser { + name: "tree-sitter-commonlisp", + src_dir: "vendored_parsers/tree-sitter-commonlisp-src", + extra_files: vec![], + }, TreeSitterParser { name: "tree-sitter-dart", src_dir: "vendored_parsers/tree-sitter-dart-src", diff --git a/src/parse/tree_sitter_parser.rs b/src/parse/tree_sitter_parser.rs index b25f56d38..68fbd0c10 100644 --- a/src/parse/tree_sitter_parser.rs +++ b/src/parse/tree_sitter_parser.rs @@ -73,6 +73,7 @@ extern "C" { fn tree_sitter_apex() -> ts::Language; fn tree_sitter_clojure() -> ts::Language; fn tree_sitter_cmake() -> ts::Language; + fn tree_sitter_commonlisp() -> ts::Language; fn tree_sitter_dart() -> ts::Language; fn tree_sitter_devicetree() -> ts::Language; fn tree_sitter_elisp() -> ts::Language; @@ -225,8 +226,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig { } } CommonLisp => { - let language_fn = tree_sitter_commonlisp::LANGUAGE_COMMONLISP; - let language = tree_sitter::Language::new(language_fn); + let language = unsafe { tree_sitter_commonlisp() }; TreeSitterConfig { language: language.clone(), diff --git a/vendored_parsers/tree-sitter-commonlisp-src b/vendored_parsers/tree-sitter-commonlisp-src new file mode 120000 index 000000000..2daf16a55 --- /dev/null +++ b/vendored_parsers/tree-sitter-commonlisp-src @@ -0,0 +1 @@ +tree-sitter-commonlisp/src \ No newline at end of file