diff options
author | Kirawi | 2022-04-18 03:10:51 +0000 |
---|---|---|
committer | GitHub | 2022-04-18 03:10:51 +0000 |
commit | c2a40d9d5229c701fa1a6d0fb80ce4ba86e8dc0c (patch) | |
tree | b27da29863432ca7ee48c582f5aeb538d7a39ea1 /helix-core | |
parent | be656c14e32243fc32ed68f9a3240301f2902df7 (diff) |
Add support for local language configuration (#1249)
* add local configuration
* move config loading to Application::new
* simplify find_root_impl
Diffstat (limited to 'helix-core')
-rw-r--r-- | helix-core/src/config.rs | 4 | ||||
-rw-r--r-- | helix-core/src/lib.rs | 38 |
2 files changed, 5 insertions, 37 deletions
diff --git a/helix-core/src/config.rs b/helix-core/src/config.rs index f399850e..2076fc22 100644 --- a/helix-core/src/config.rs +++ b/helix-core/src/config.rs @@ -1,10 +1,10 @@ /// Syntax configuration loader based on built-in languages.toml. pub fn default_syntax_loader() -> crate::syntax::Configuration { - helix_loader::default_lang_config() + helix_loader::config::default_lang_config() .try_into() .expect("Could not serialize built-in languages.toml") } /// Syntax configuration loader based on user configured languages.toml. pub fn user_syntax_loader() -> Result<crate::syntax::Configuration, toml::de::Error> { - helix_loader::user_lang_config()?.try_into() + helix_loader::config::user_lang_config()?.try_into() } diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs index 0ae68f91..02341265 100644 --- a/helix-core/src/lib.rs +++ b/helix-core/src/lib.rs @@ -46,41 +46,9 @@ pub fn find_first_non_whitespace_char(line: RopeSlice) -> Option<usize> { /// * Top-most folder containing a root marker if not git repository detected /// * Current working directory as fallback pub fn find_root(root: Option<&str>, root_markers: &[String]) -> Option<std::path::PathBuf> { - let current_dir = std::env::current_dir().expect("unable to determine current directory"); - - let root = match root { - Some(root) => { - let root = std::path::Path::new(root); - if root.is_absolute() { - root.to_path_buf() - } else { - current_dir.join(root) - } - } - None => current_dir.clone(), - }; - - let mut top_marker = None; - for ancestor in root.ancestors() { - for marker in root_markers { - if ancestor.join(marker).exists() { - top_marker = Some(ancestor); - break; - } - } - // don't go higher than repo - if ancestor.join(".git").is_dir() { - // Use workspace if detected from marker - return Some(top_marker.unwrap_or(ancestor).to_path_buf()); - } - } - - // In absence of git repo, use workspace if detected - if top_marker.is_some() { - top_marker.map(|a| a.to_path_buf()) - } else { - Some(current_dir) - } + helix_loader::find_root_impl(root, root_markers) + .first() + .cloned() } pub use ropey::{Rope, RopeBuilder, RopeSlice}; |