summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/file_browser.rs20
-rw-r--r--src/listview.rs4
-rw-r--r--src/preview.rs2
-rw-r--r--src/widget.rs5
4 files changed, 22 insertions, 9 deletions
diff --git a/src/file_browser.rs b/src/file_browser.rs
index f7fd5ad..0402f9a 100644
--- a/src/file_browser.rs
+++ b/src/file_browser.rs
@@ -117,12 +117,17 @@ impl FileBrowser {
pub fn quit_with_dir(&self) {
let cwd = self.cwd().path;
+ let selected_file = self.selected_file().path.to_string_lossy();
let mut filepath = dirs_2::home_dir().unwrap();
filepath.push(".hunter_cwd");
+ let output = format!("HUNTER_CWD=\"{}\"\nF=\"{}\"",
+ cwd.to_str().unwrap(),
+ selected_file);
+
let mut file = std::fs::File::create(filepath).unwrap();
- file.write(cwd.to_str().unwrap().as_bytes()).unwrap();
+ file.write(output.as_bytes()).unwrap();
panic!("Quitting!");
}
}
@@ -147,7 +152,14 @@ impl Widget for FileBrowser {
self.columns.coordinates = coordinates.clone();
}
fn render_header(&self) -> String {
- "".to_string()
+ let file = self.selected_file();
+ let name = &file.name;
+ let color = if file.is_dir() || file.color.is_none() {
+ crate::term::highlight_color() } else {
+ crate::term::from_lscolor(file.color.as_ref().unwrap()) };
+
+ let path = file.path.parent().unwrap().to_string_lossy().to_string();
+ format!("{}/{}{}", path, &color, name )
}
fn refresh(&mut self) {
self.columns.refresh();
@@ -164,8 +176,8 @@ impl Widget for FileBrowser {
fn on_key(&mut self, key: Key) {
match key {
Key::Char('Q') => self.quit_with_dir(),
- Key::Right => self.enter_dir(),
- Key::Left => self.go_back(),
+ Key::Right | Key::Char('f') => self.enter_dir(),
+ Key::Left | Key::Char('b') => self.go_back(),
_ => self.columns.get_main_widget_mut().on_key(key),
}
self.update_preview();
diff --git a/src/listview.rs b/src/listview.rs
index 31104c2..3c5a3ec 100644
--- a/src/listview.rs
+++ b/src/listview.rs
@@ -283,11 +283,11 @@ impl Widget for ListView<Files> {
fn on_key(&mut self, key: Key) {
match key {
- Key::Up => {
+ Key::Up | Key::Char('p') => {
self.move_up();
self.refresh();
}
- Key::Down => {
+ Key::Down | Key::Char('n') => {
self.move_down();
self.refresh();
}
diff --git a/src/preview.rs b/src/preview.rs
index 8245c34..d3cb74a 100644
--- a/src/preview.rs
+++ b/src/preview.rs
@@ -85,7 +85,7 @@ impl Previewer {
.output().unwrap();
- if output.status.code().unwrap() == 5 {
+ if output.status.code().unwrap() != 0 {
write!(std::io::stdout(), "{}", redraw).unwrap();
} else {
let output = std::str::from_utf8(&output.stdout)
diff --git a/src/widget.rs b/src/widget.rs
index e21cb84..f6ea4b6 100644
--- a/src/widget.rs
+++ b/src/widget.rs
@@ -53,11 +53,12 @@ pub trait Widget: PartialEq {
fn get_header_drawlist(&mut self) -> String {
format!(
- "{}{}{}{:xsize$}",
+ "{}{}{:xsize$}{}{}",
crate::term::goto_xy(1, 1),
crate::term::header_color(),
- self.render_header(),
" ",
+ crate::term::goto_xy(1, 1),
+ self.render_header(),
xsize = self.get_size().xsize() as usize
)
}