diff options
author | quantonganh | 2023-08-14 13:46:06 +0000 |
---|---|---|
committer | GitHub | 2023-08-14 13:46:06 +0000 |
commit | 085706e0cdd569f36f36875fb6698a197c46ed11 (patch) | |
tree | 7b10b7cc0f8951275fa82a9dba73d2e06a426da6 /helix-term/src | |
parent | d6bb1092c7f046d4ac7eb3bad6a7e4b9b9d94ca7 (diff) |
Include completions for git-ignored files in debugger prompt (#7936)
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/commands/dap.rs | 8 | ||||
-rw-r--r-- | helix-term/src/ui/mod.rs | 28 |
2 files changed, 31 insertions, 5 deletions
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs index e26dc08d..cc013d1e 100644 --- a/helix-term/src/commands/dap.rs +++ b/helix-term/src/commands/dap.rs @@ -339,8 +339,12 @@ fn debug_parameter_prompt( .to_owned(); let completer = match field_type { - "filename" => ui::completers::filename, - "directory" => ui::completers::directory, + "filename" => |editor: &Editor, input: &str| { + ui::completers::filename_with_git_ignore(editor, input, false) + }, + "directory" => |editor: &Editor, input: &str| { + ui::completers::directory_with_git_ignore(editor, input, false) + }, _ => ui::completers::none, }; diff --git a/helix-term/src/ui/mod.rs b/helix-term/src/ui/mod.rs index 215794e3..2d15fb32 100644 --- a/helix-term/src/ui/mod.rs +++ b/helix-term/src/ui/mod.rs @@ -345,7 +345,15 @@ pub mod completers { } pub fn filename(editor: &Editor, input: &str) -> Vec<Completion> { - filename_impl(editor, input, |entry| { + filename_with_git_ignore(editor, input, true) + } + + pub fn filename_with_git_ignore( + editor: &Editor, + input: &str, + git_ignore: bool, + ) -> Vec<Completion> { + filename_impl(editor, input, git_ignore, |entry| { let is_dir = entry.file_type().map_or(false, |entry| entry.is_dir()); if is_dir { @@ -416,7 +424,15 @@ pub mod completers { } pub fn directory(editor: &Editor, input: &str) -> Vec<Completion> { - filename_impl(editor, input, |entry| { + directory_with_git_ignore(editor, input, true) + } + + pub fn directory_with_git_ignore( + editor: &Editor, + input: &str, + git_ignore: bool, + ) -> Vec<Completion> { + filename_impl(editor, input, git_ignore, |entry| { let is_dir = entry.file_type().map_or(false, |entry| entry.is_dir()); if is_dir { @@ -439,7 +455,12 @@ pub mod completers { } // TODO: we could return an iter/lazy thing so it can fetch as many as it needs. - fn filename_impl<F>(_editor: &Editor, input: &str, filter_fn: F) -> Vec<Completion> + fn filename_impl<F>( + _editor: &Editor, + input: &str, + git_ignore: bool, + filter_fn: F, + ) -> Vec<Completion> where F: Fn(&ignore::DirEntry) -> FileMatch, { @@ -482,6 +503,7 @@ pub mod completers { let mut files: Vec<_> = WalkBuilder::new(&dir) .hidden(false) .follow_links(false) // We're scanning over depth 1 + .git_ignore(git_ignore) .max_depth(Some(1)) .build() .filter_map(|file| { |