diff options
author | Gokul Soumya | 2022-02-14 16:41:53 +0000 |
---|---|---|
committer | GitHub | 2022-02-14 16:41:53 +0000 |
commit | 4c424d5ee442788b32eaaee67b4256aaa93aafa2 (patch) | |
tree | 7ea2a8e579b16400ae9573264c96b82123e1c828 /helix-core/src | |
parent | e267dc834a815ae2dd9d04c9e81fb206f81a2c99 (diff) |
Refactor language config loading (#1658)
Diffstat (limited to 'helix-core/src')
-rw-r--r-- | helix-core/src/config.rs | 33 | ||||
-rw-r--r-- | helix-core/src/lib.rs | 1 |
2 files changed, 34 insertions, 0 deletions
diff --git a/helix-core/src/config.rs b/helix-core/src/config.rs new file mode 100644 index 00000000..5bd16abd --- /dev/null +++ b/helix-core/src/config.rs @@ -0,0 +1,33 @@ +use crate::merge_toml_values; + +/// Default bultin-in languages.toml. +pub fn default_lang_config() -> toml::Value { + toml::from_slice(include_bytes!("../../languages.toml")) + .expect("Could not parse bultin-in languages.toml to valid toml") +} + +/// User configured languages.toml file, merged with the default config. +pub fn user_lang_config() -> Result<toml::Value, toml::de::Error> { + let def_lang_conf = default_lang_config(); + let data = std::fs::read(crate::config_dir().join("languages.toml")); + let user_lang_conf = match data { + Ok(raw) => { + let value = toml::from_slice(&raw)?; + merge_toml_values(def_lang_conf, value) + } + Err(_) => def_lang_conf, + }; + + Ok(user_lang_conf) +} + +/// Syntax configuration loader based on built-in languages.toml. +pub fn default_syntax_loader() -> crate::syntax::Configuration { + default_lang_config() + .try_into() + .expect("Could not serialize built-in language.toml") +} +/// Syntax configuration loader based on user configured languages.toml. +pub fn user_syntax_loader() -> Result<crate::syntax::Configuration, toml::de::Error> { + user_lang_config()?.try_into() +} diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs index fa8566ab..8e5950de 100644 --- a/helix-core/src/lib.rs +++ b/helix-core/src/lib.rs @@ -3,6 +3,7 @@ pub use encoding_rs as encoding; pub mod auto_pairs; pub mod chars; pub mod comment; +pub mod config; pub mod diagnostic; pub mod diff; pub mod graphemes; |