Skip to content

Commit edc0bf6

Browse files
authored
Add "a" key to select all in --interactive mode (#22)
* feat: adds the "a" key in interactive mode for a select all functionality * style: drop the _items its cleaner
1 parent 06f2bf1 commit edc0bf6

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/file_picker.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ impl FilePicker {
7979
match key.code {
8080
KeyCode::Char('q') => break,
8181
KeyCode::Char('?') => self.show_help = !self.show_help,
82+
KeyCode::Char('a') if !self.show_help => self.select_all(),
8283
KeyCode::Char('x')
8384
if !self.show_help && !self.selected_files.is_empty() =>
8485
{
@@ -332,6 +333,21 @@ impl FilePicker {
332333
Ok(())
333334
}
334335

336+
fn select_all(&mut self) {
337+
let before = self.selected_files.len();
338+
339+
for path in &self.files {
340+
if path.is_file() && !self.selected_files.contains(path) {
341+
self.selected_files.push(path.clone());
342+
}
343+
}
344+
345+
// If this was previously empty, move the buffer cursor to the first item
346+
if before == 0 && !self.selected_files.is_empty() {
347+
self.selected_list_state.select(Some(0));
348+
}
349+
}
350+
335351
fn go_up(&mut self) -> Result<()> {
336352
if let Some(parent) = self.current_dir.parent() {
337353
self.current_dir = parent.to_path_buf();
@@ -360,6 +376,8 @@ impl FilePicker {
360376
Line::from(" Select/open directory"),
361377
Line::from(Span::styled("x", Style::default().fg(Color::Yellow))),
362378
Line::from(" Unselect file"),
379+
Line::from(Span::styled("a", Style::default().fg(Color::Yellow))),
380+
Line::from(" Select all files"),
363381
Line::from(Span::styled(
364382
"Backspace",
365383
Style::default().fg(Color::Yellow),

0 commit comments

Comments
 (0)