From 234bd795918660ca36924c1f10282dcf351eb819 Mon Sep 17 00:00:00 2001 From: Douglas Creager Date: Wed, 31 Mar 2021 09:56:24 -0400 Subject: [PATCH] Update tree-sitter-{highlight,tags} READMEs We now have an easier way to get at the language-specific configuration in Rust, since we publish each language grammar as a crate with useful accessor functions and globals. --- highlight/README.md | 27 ++++++++++++++------------- tags/README.md | 37 ++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/highlight/README.md b/highlight/README.md index 07edc421..89b19d7f 100644 --- a/highlight/README.md +++ b/highlight/README.md @@ -1,5 +1,4 @@ -Tree-sitter Highlight -========================= +# `tree-sitter-highlight` [![Build Status](https://travis-ci.org/tree-sitter/tree-sitter.svg?branch=master)](https://travis-ci.org/tree-sitter/tree-sitter) [![Build status](https://ci.appveyor.com/api/projects/status/vtmbd6i92e97l55w/branch/master?svg=true)](https://ci.appveyor.com/project/maxbrunsfeld/tree-sitter/branch/master) @@ -7,11 +6,13 @@ Tree-sitter Highlight ### Usage -Compile some languages into your app, and declare them: +Add this crate, and the language-specific crates for whichever languages you want to parse, to your `Cargo.toml`: -```rust -extern "C" tree_sitter_html(); -extern "C" tree_sitter_javascript(); +```toml +[dependencies] +tree-sitter-highlight = "0.19" +tree-sitter-html = "0.19" +tree-sitter-javascript = "0.19" ``` Define the list of highlight names that you will recognize: @@ -60,17 +61,17 @@ let html_language = unsafe { tree_sitter_html() }; let javascript_language = unsafe { tree_sitter_javascript() }; let html_config = HighlightConfiguration::new( - html_language, - &fs::read_to_string("./tree-sitter-html/queries/highlights.scm").unwrap(), - &fs::read_to_string("./tree-sitter-html/queries/injections.scm").unwrap(), + tree_sitter_html::language(), + tree_sitter_html::HIGHLIGHTS_QUERY, + tree_sitter_html::INJECTIONS_QUERY, "", ).unwrap(); let javascript_config = HighlightConfiguration::new( - javascript_language, - &fs::read_to_string("./tree-sitter-javascript/queries/highlights.scm").unwrap(), - &fs::read_to_string("./tree-sitter-javascript/queries/injections.scm").unwrap(), - &fs::read_to_string("./tree-sitter-javascript/queries/locals.scm").unwrap(), + tree_sitter_javascript::language(), + tree_sitter_javascript::HIGHLIGHTS_QUERY, + tree_sitter_javascript::INJECTIONS_QUERY, + tree_sitter_javascript::LCOALS_QUERY, ).unwrap(); ``` diff --git a/tags/README.md b/tags/README.md index 7a55c254..36efa494 100644 --- a/tags/README.md +++ b/tags/README.md @@ -1,13 +1,14 @@ -Tree-sitter Tags -========================= +# `tree-sitter-tags` ### Usage -Compile some languages into your app, and declare them: +Add this crate, and the language-specific crates for whichever languages you want to parse, to your `Cargo.toml`: -```rust -extern "C" tree_sitter_python(); -extern "C" tree_sitter_javascript(); +```toml +[dependencies] +tree-sitter-tags = "0.19" +tree-sitter-javascript = "0.19" +tree-sitter-python = "0.19" ``` Create a tag context. You need one of these for each thread that you're using for tag computation: @@ -21,34 +22,28 @@ let context = TagsContext::new(); Load some tagging queries from the `queries` directory of some language repositories: ```rust -use tree_sitter_highlight::TagsConfiguration; +use tree_sitter_tags::TagsConfiguration; -let python_language = unsafe { tree_sitter_python() }; -let javascript_language = unsafe { tree_sitter_javascript() }; - -let python_config = HighlightConfiguration::new( - python_language, - &fs::read_to_string("./tree-sitter-python/queries/tags.scm").unwrap(), - &fs::read_to_string("./tree-sitter-python/queries/locals.scm").unwrap(), +let python_config = TagsConfiguration::new( + tree_sitter_python::language(), + tree_sitter_python::TAGGING_QUERY, + "", ).unwrap(); -let javascript_config = HighlightConfiguration::new( - javascript_language, - &fs::read_to_string("./tree-sitter-javascript/queries/tags.scm").unwrap(), - &fs::read_to_string("./tree-sitter-javascript/queries/locals.scm").unwrap(), +let javascript_config = TagsConfiguration::new( + tree_sitter_javascript::language(), + tree_sitter_javascript::TAGGING_QUERY, + tree_sitter_javascript::LOCALS_QUERY, ).unwrap(); ``` Compute code navigation tags for some source code: ```rust -use tree_sitter_highlight::HighlightEvent; - let tags = context.generate_tags( &javascript_config, b"class A { getB() { return c(); } }", None, - |_| None ); for tag in tags {