diff options
author | Canop <cano.petrole@gmail.com> | 2019-03-02 20:48:26 +0100 |
---|---|---|
committer | Canop <cano.petrole@gmail.com> | 2019-03-02 20:48:26 +0100 |
commit | 2f80de55067df09ca1dfd4e392dd262ed76d756c (patch) | |
tree | 4ae1c7a0d337a02d6c2da8adb50e6615a430ba68 /src/browser_states.rs | |
parent | cf19b2f4842d06cf4dea6ab56d8d6a871a04d938 (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.rs | 25 |
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, |