summaryrefslogtreecommitdiffstats
path: root/src/browser_states.rs
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2019-03-02 20:48:26 +0100
committerCanop <cano.petrole@gmail.com>2019-03-02 20:48:26 +0100
commit2f80de55067df09ca1dfd4e392dd262ed76d756c (patch)
tree4ae1c7a0d337a02d6c2da8adb50e6615a430ba68 /src/browser_states.rs
parentcf19b2f4842d06cf4dea6ab56d8d6a871a04d938 (diff)
support of leave_broot=false for verbs
Doesn't work well for terminal based applications like vim, emacs, etc. though
Diffstat (limited to 'src/browser_states.rs')
-rw-r--r--src/browser_states.rs25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/browser_states.rs b/src/browser_states.rs
index a9e54df..378d04b 100644
--- a/src/browser_states.rs
+++ b/src/browser_states.rs
@@ -84,7 +84,7 @@ impl AppState for BrowserState {
fn apply(
&mut self,
cmd: &mut Command,
- screen: &Screen,
+ screen: &mut Screen,
con: &AppContext,
) -> io::Result<AppStateCmdResult> {
self.pending_pattern = Pattern::None;
@@ -169,7 +169,7 @@ impl AppState for BrowserState {
};
let line = tree.selected_line();
let cd_idx = con.verb_store.index_of("cd");
- con.verb_store.verbs[cd_idx].to_cmd_result(&line.target(), &None, con)?
+ con.verb_store.verbs[cd_idx].to_cmd_result(&line.target(), &None, screen, con)?
}
Action::Verb(invocation) => match con.verb_store.search(&invocation.key) {
PrefixSearchResult::Match(verb) => self.execute_verb(verb, &invocation.args, screen, con)?,
@@ -312,6 +312,27 @@ impl AppState for BrowserState {
}
}
+ fn refresh(
+ &mut self,
+ screen: &Screen,
+ _con: &AppContext,
+ ) -> Command {
+ let page_height = BrowserState::page_height(screen) as usize;
+ // refresh the base tree
+ if let Err(e) = self.tree.refresh(page_height) {
+ warn!("refreshing base tree failed : {:?}", e);
+ }
+ // refresh the filtered tree, if any
+ if let Some(ref mut tree) = self.filtered_tree {
+ if let Err(e) = tree.refresh(page_height) {
+ warn!("refreshing filtered tree failed : {:?}", e);
+ }
+ tree.options.pattern.to_command()
+ } else {
+ self.tree.options.pattern.to_command()
+ }
+ }
+
fn write_flags(&self, screen: &mut Screen, _con: &AppContext) -> io::Result<()> {
let tree = match &self.filtered_tree {
Some(tree) => &tree,