aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/commands.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r--helix-term/src/commands.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 2ee3f6b9..4f27fc80 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -49,6 +49,7 @@ use movement::Movement;
use crate::{
args,
compositor::{self, Component, Compositor},
+ filter_picker_entry,
job::Callback,
keymap::ReverseKeymap,
ui::{self, overlay::overlayed, FilePicker, Picker, Popup, Prompt, PromptEvent},
@@ -2013,6 +2014,11 @@ fn global_search(cx: &mut Context) {
let search_root = std::env::current_dir()
.expect("Global search error: Failed to get current dir");
+ let dedup_symlinks = file_picker_config.deduplicate_links;
+ let absolute_root = search_root
+ .canonicalize()
+ .unwrap_or_else(|_| search_root.clone());
+
WalkBuilder::new(search_root)
.hidden(file_picker_config.hidden)
.parents(file_picker_config.parents)
@@ -2022,10 +2028,9 @@ fn global_search(cx: &mut Context) {
.git_global(file_picker_config.git_global)
.git_exclude(file_picker_config.git_exclude)
.max_depth(file_picker_config.max_depth)
- // We always want to ignore the .git directory, otherwise if
- // `ignore` is turned off above, we end up with a lot of noise
- // in our picker.
- .filter_entry(|entry| entry.file_name() != ".git")
+ .filter_entry(move |entry| {
+ filter_picker_entry(entry, &absolute_root, dedup_symlinks)
+ })
.build_parallel()
.run(|| {
let mut searcher = searcher.clone();