Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-loader/src/lib.rs')
| -rw-r--r-- | helix-loader/src/lib.rs | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/helix-loader/src/lib.rs b/helix-loader/src/lib.rs index 705e016b..37ec9ec3 100644 --- a/helix-loader/src/lib.rs +++ b/helix-loader/src/lib.rs @@ -64,6 +64,7 @@ fn prioritize_runtime_dirs() -> Vec<PathBuf> { if let Some(dir) = std::option_env!("HELIX_DEFAULT_RUNTIME") { rt_dirs.push(dir.into()); } + // fallback to location of the executable being run // canonicalize the path in case the executable is symlinked let exe_rt_dir = std::env::current_exe() @@ -72,7 +73,6 @@ fn prioritize_runtime_dirs() -> Vec<PathBuf> { .and_then(|path| path.parent().map(|path| path.to_path_buf().join(RT_DIR))) .unwrap(); rt_dirs.push(exe_rt_dir); - rt_dirs.push(PathBuf::from("/usr/lib/helix/runtime/")); rt_dirs } @@ -132,6 +132,15 @@ pub fn cache_dir() -> PathBuf { path } +pub fn state_dir() -> PathBuf { + let strategy = choose_base_strategy().expect("could not determine XDG strategy"); + let mut path = strategy + .state_dir() + .expect("state_dir is always Some for default base strategy"); + path.push("helix"); + path +} + pub fn config_file() -> PathBuf { CONFIG_FILE.get().map(|path| path.to_path_buf()).unwrap() } @@ -152,6 +161,11 @@ pub fn default_log_file() -> PathBuf { cache_dir().join("helix.log") } +// TODO: personal dictionary per language. +pub fn personal_dictionary_file() -> PathBuf { + state_dir().join("personal-dictionary.txt") +} + /// Merge two TOML documents, merging values from `right` onto `left` /// /// `merge_depth` sets the nesting depth up to which values are merged instead @@ -244,12 +258,7 @@ pub fn merge_toml_values(left: toml::Value, right: toml::Value, merge_depth: usi /// Otherwise (workspace, false) is returned pub fn find_workspace() -> (PathBuf, bool) { let current_dir = current_working_dir(); - find_workspace_in(current_dir) -} - -pub fn find_workspace_in(dir: impl AsRef<Path>) -> (PathBuf, bool) { - let dir = dir.as_ref(); - for ancestor in dir.ancestors() { + for ancestor in current_dir.ancestors() { if ancestor.join(".git").exists() || ancestor.join(".svn").exists() || ancestor.join(".jj").exists() @@ -259,7 +268,7 @@ pub fn find_workspace_in(dir: impl AsRef<Path>) -> (PathBuf, bool) { } } - (dir.to_owned(), true) + (current_dir, true) } fn default_config_file() -> PathBuf { |