summaryrefslogtreecommitdiff
path: root/helix-core/src/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-core/src/config.rs')
-rw-r--r--helix-core/src/config.rs33
1 files changed, 33 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()
+}