fix crash when running commands in unloaded directory

This commit is contained in:
rabite 2019-04-07 13:43:41 +02:00
parent 9d6d2ac83f
commit 62474ff6bc
2 changed files with 21 additions and 9 deletions

View File

@ -148,9 +148,7 @@ impl Tabbable for TabView<FileBrowser> {
.widgets
.iter()
.map(|w| {
w.selected_files()
.map_err(|_| Vec::<Files>::new())
.unwrap()
w.selected_files().unwrap_or(vec![])
}).collect();
self.widgets[self.active].exec_cmd(tab_dirs, selected_files)
@ -838,21 +836,29 @@ impl FileBrowser {
tab_files: Vec<Vec<File>>) -> HResult<()> {
let cwd = self.cwd()?.clone();
let selected_file = self.selected_file()?;
let selected_files = self.selected_files()?;
let selected_file = self.selected_file().ok();
let selected_files = self.selected_files().ok();
let cmd = self.minibuffer("exec")?.trim_start().to_string() + " ";
let cwd_files = if selected_files.len() == 0 {
vec![selected_file]
} else { selected_files };
let cwd_files = selected_files.map(|selected_files| {
if selected_files.len() == 0 {
if selected_file.is_some() {
vec![selected_file.unwrap()]
} else {
selected_files
}
} else {
selected_files
}
});
let cmd = crate::proclist::Cmd {
cmd: OsString::from(cmd),
short_cmd: None,
args: None,
cwd: cwd,
cwd_files: Some(cwd_files),
cwd_files: cwd_files,
tab_files: Some(tab_files),
tab_paths: Some(tab_dirs)
};

View File

@ -51,6 +51,8 @@ impl Cmd {
}
fn substitute_cwd_files(&mut self, cmd: Vec<OsString>) -> Vec<OsString> {
if self.cwd_files.is_none() { return cmd; }
let cwd_pat = OsString::from("$s");
let cwd_files = self.cwd_files
.take()
@ -66,6 +68,8 @@ impl Cmd {
}
fn substitute_tab_files(&mut self, cmd: Vec<OsString>) -> Vec<OsString> {
if self.tab_files.is_none() { return cmd; }
let tab_files = self.tab_files.take().unwrap();
tab_files.into_iter()
@ -84,6 +88,8 @@ impl Cmd {
}
fn substitute_tab_paths(&mut self, cmd: Vec<OsString>) -> Vec<OsString> {
if self.tab_paths.is_none() { return cmd; }
let tab_paths = self.tab_paths.take().unwrap();
tab_paths.into_iter()