From d3746dacb2308523902501208bdca28965f2954a Mon Sep 17 00:00:00 2001
From: rabite <rabite@posteo.de>
Date: Tue, 5 Feb 2019 01:47:52 +0100
Subject: [PATCH] some lipstick

---
 src/file_browser.rs | 20 ++++++++++++++++----
 src/listview.rs     |  4 ++--
 src/preview.rs      |  2 +-
 src/widget.rs       |  5 +++--
 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
         )
     }