aboutsummaryrefslogtreecommitdiff
path: root/helix-core
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-07-11 10:36:45 +0000
committerBlaž Hrastnik2021-07-14 01:00:05 +0000
commitdd2903ff10387c04e933aa37846663131297b8b3 (patch)
tree97a6d2d98e8cf350e1e32cad28c7a83483649be9 /helix-core
parentdd5e8082e410032c9782835cf0fc52a469d050b1 (diff)
Dynamically load grammar libraries at runtime
Diffstat (limited to 'helix-core')
-rw-r--r--helix-core/src/indent.rs4
-rw-r--r--helix-core/src/syntax.rs12
2 files changed, 8 insertions, 8 deletions
diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs
index 81bdffc0..1b36db7b 100644
--- a/helix-core/src/indent.rs
+++ b/helix-core/src/indent.rs
@@ -253,14 +253,14 @@ where
let doc = Rope::from(doc);
use crate::syntax::{
- Configuration, IndentationConfiguration, Lang, LanguageConfiguration, Loader,
+ Configuration, IndentationConfiguration, LanguageConfiguration, Loader,
};
use once_cell::sync::OnceCell;
let loader = Loader::new(Configuration {
language: vec![LanguageConfiguration {
scope: "source.rust".to_string(),
file_types: vec!["rs".to_string()],
- language_id: Lang::Rust,
+ language_id: "Rust".to_string(),
highlight_config: OnceCell::new(),
//
roots: vec![],
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 833ccfb9..f249f5fe 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -5,7 +5,7 @@ use crate::{
Rope, RopeSlice, Tendril,
};
-pub use helix_syntax::{get_language, get_language_name, Lang};
+pub use helix_syntax::get_language;
use arc_swap::ArcSwap;
@@ -31,7 +31,7 @@ pub struct Configuration {
#[serde(rename_all = "kebab-case")]
pub struct LanguageConfiguration {
#[serde(rename = "name")]
- pub(crate) language_id: Lang,
+ pub(crate) language_id: String,
pub scope: String, // source.rust
pub file_types: Vec<String>, // filename ends_with? <Gemfile, rb, etc>
pub roots: Vec<String>, // these indicate project roots <.git, Cargo.toml>
@@ -153,7 +153,7 @@ fn read_query(language: &str, filename: &str) -> String {
impl LanguageConfiguration {
fn initialize_highlight(&self, scopes: &[String]) -> Option<Arc<HighlightConfiguration>> {
- let language = get_language_name(self.language_id).to_ascii_lowercase();
+ let language = self.language_id.to_ascii_lowercase();
let highlights_query = read_query(&language, "highlights.scm");
// always highlight syntax errors
@@ -166,7 +166,7 @@ impl LanguageConfiguration {
if highlights_query.is_empty() {
None
} else {
- let language = get_language(self.language_id);
+ let language = get_language(&crate::RUNTIME_DIR, &self.language_id).ok()?;
let config = HighlightConfiguration::new(
language,
&highlights_query,
@@ -198,7 +198,7 @@ impl LanguageConfiguration {
pub fn indent_query(&self) -> Option<&IndentQuery> {
self.indent_query
.get_or_init(|| {
- let language = get_language_name(self.language_id).to_ascii_lowercase();
+ let language = self.language_id.to_ascii_lowercase();
let toml = load_runtime_file(&language, "indents.toml").ok()?;
toml::from_slice(toml.as_bytes()).ok()
@@ -1802,7 +1802,7 @@ mod test {
.map(String::from)
.collect();
- let language = get_language(Lang::Rust);
+ let language = get_language(&crate::RUNTIME_DIR, "Rust").unwrap();
let config = HighlightConfiguration::new(
language,
&std::fs::read_to_string(