summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-02-25 19:33:40 +0100
committerrabite <rabite@posteo.de>2019-02-25 19:33:40 +0100
commit184f4916d32cec88ec9ac5a48afb7aedceffdfea (patch)
treec6b775e011fe0a9f93bb42bf305300988bcb13a1
parent7fc77f8605bf637331f2f9c283c4b4e284891af1 (diff)
find files
-rw-r--r--src/file_browser.rs15
-rw-r--r--src/listview.rs18
2 files changed, 17 insertions, 16 deletions
diff --git a/src/file_browser.rs b/src/file_browser.rs
index 8ede380..53fa898 100644
--- a/src/file_browser.rs
+++ b/src/file_browser.rs
@@ -59,13 +59,6 @@ impl FileBrowser {
miller.set_coordinates(&coords);
- // let lists: Result<Vec<ListView<Files>>, Box<Error>> = cwd
- // .ancestors()
- // .map(|path| Ok(ListView::new(Files::new_from_path(path)?)))
- // .take(2)
- // .collect();
- // let mut lists = lists?;
- // lists.reverse();
let (left_coords, main_coords, _) = miller.calculate_coordinates();
let main_path: std::path::PathBuf = cwd.ancestors().take(1).map(|path| std::path::PathBuf::from(path)).collect();
@@ -90,9 +83,6 @@ impl FileBrowser {
miller.push_widget(left_widget);
miller.push_widget(main_widget);
- // for widget in lists {
- // miller.push_widget(widget);
- // }
let cwd = File::new_from_path(&cwd).unwrap();
@@ -100,11 +90,6 @@ impl FileBrowser {
cwd: cwd };
-
- //file_browser.fix_selection();
- //file_browser.animate_columns();
- //file_browser.update_preview();
-
Ok(file_browser)
}
diff --git a/src/listview.rs b/src/listview.rs
index 904baa9..3633dfe 100644
--- a/src/listview.rs
+++ b/src/listview.rs
@@ -6,6 +6,7 @@ use std::io::Write;
use crate::coordinates::{Coordinates, Position, Size};
use crate::files::{File, Files};
+use crate::fail::HResult;
use crate::term;
use crate::widget::{Widget};
@@ -41,7 +42,8 @@ impl Listable for ListView<Files> {
Key::Down | Key::Char('n') => {
self.move_down();
self.refresh();
- }
+ },
+ Key::Ctrl('s') => { self.find_file().ok(); }
Key::Left => self.goto_grand_parent(),
Key::Right => self.goto_selected(),
Key::Char(' ') => self.multi_select_file(),
@@ -381,6 +383,20 @@ impl ListView<Files>
}
}
+ fn find_file(&mut self) -> HResult<()> {
+ let name = self.minibuffer("find")?;
+ let file = self.content.files.iter().find(|file| {
+ if file.name.to_lowercase().contains(&name) {
+ true
+ } else {
+ false
+ }
+ })?.clone();
+
+ self.select_file(&file);
+ Ok(())
+ }
+
fn render(&self) -> Vec<String> {
let ysize = self.get_coordinates().ysize() as usize;
let offset = self.offset;