aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src
diff options
context:
space:
mode:
authorMichael Davis2022-02-15 05:23:01 +0000
committerBlaž Hrastnik2022-03-10 08:31:57 +0000
commit08ee949dcb904dc27aa41a62ad686c14c0a406bb (patch)
tree60c897b886751612b51de60705112b4a0c929b76 /helix-core/src
parentdb3470d973ed97445d180c18035c2858e4749782 (diff)
add 'use-grammars' to languages.toml
The vision with 'use-grammars' is to allow the long-requested feature of being able to declare your own set of grammars that you would like. A simple schema with only/except grammar names controls the list of grammars that is fetched and built. It does not (yet) control which grammars may be loaded at runtime if they already exist.
Diffstat (limited to 'helix-core/src')
-rw-r--r--helix-core/src/indent.rs1
-rw-r--r--helix-core/src/syntax.rs12
2 files changed, 12 insertions, 1 deletions
diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs
index ba02065c..ee9cbb16 100644
--- a/helix-core/src/indent.rs
+++ b/helix-core/src/indent.rs
@@ -445,6 +445,7 @@ where
auto_pairs: None,
}],
grammar: vec![],
+ grammar_selection: None,
});
// set runtime path so we can find the queries
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 52239d10..28aa31f9 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -81,12 +81,21 @@ where
}
#[derive(Debug, Serialize, Deserialize)]
-#[serde(deny_unknown_fields)]
+#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub struct Configuration {
+ #[serde(rename = "use-grammars")]
+ pub grammar_selection: Option<GrammarSelection>,
pub language: Vec<LanguageConfiguration>,
pub grammar: Vec<GrammarConfiguration>,
}
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "lowercase", untagged)]
+pub enum GrammarSelection {
+ Only(HashSet<String>),
+ Except(HashSet<String>),
+}
+
// largely based on tree-sitter/cli/src/loader.rs
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
@@ -2110,6 +2119,7 @@ mod test {
let loader = Loader::new(Configuration {
language: vec![],
grammar: vec![],
+ grammar_selection: None,
});
let language = get_language(&crate::RUNTIME_DIR, "Rust").unwrap();