aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
authorRiccardo Binetti2022-09-23 08:04:07 +0000
committerGitHub2022-09-23 08:04:07 +0000
commit888f4fef6f975412c8215c4b76871ffba6e1b41d (patch)
treed6cc3ebf96af323732c85dff0e393ef24accfd8d /helix-term/src
parent4133f1f424c6a9da71cab65dc9541e6d941ec603 (diff)
Split helix_core::find_root and helix_loader::find_local_config_dirs (#3929)
* Split helix_core::find_root and helix_loader::find_local_config_dirs The documentation of find_root described the following priority for detecting a project root: - Top-most folder containing a root marker in current git repository - Git repository root if no marker detected - Top-most folder containing a root marker if not git repository detected - Current working directory as fallback The commit contained in https://github.com/helix-editor/helix/pull/1249 extracted and changed the implementation of find_root in find_root_impl, actually reversing its result order (since that is the order that made sense for the local configuration merge, from innermost to outermost ancestors). Since the two uses of find_root_impl have different requirements (and it's not a matter of reversing the order of results since, e.g., the top repository dir should be used by find_root only if there's not marker in other dirs), this PR splits the two implementations in two different specialized functions. In doing so, find_root_impl is removed and the implementation is moved back in find_root, moving it closer to the documented behaviour thus making it easier to verify it's actually correct * helix-core: remove Option from find_root return type It always returns some result, so Option is not needed
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/commands.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index a5203352..c87ad0ca 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -2225,8 +2225,9 @@ fn append_mode(cx: &mut Context) {
}
fn file_picker(cx: &mut Context) {
- // We don't specify language markers, root will be the root of the current git repo
- let root = find_root(None, &[]).unwrap_or_else(|| PathBuf::from("./"));
+ // We don't specify language markers, root will be the root of the current
+ // git repo or the current dir if we're not in a repo
+ let root = find_root(None, &[]);
let picker = ui::file_picker(root, &cx.editor.config());
cx.push_layer(Box::new(overlayed(picker)));
}