T13: the right column's Git and Files switch, kept in settings; Files shows the shown session's folder as a tree, folders first, Git's marks on names from git status without optional locks, unreadable folders noted; a double press opens a folder, or a file in the system's app; it reloads when the session reports a folder, so at each prompt; a program without shell integration gets a line saying it reports no folder; header controls keep their presses from the header's double-press zoom
This commit is contained in:
11 files changed
+700
-27
No files matched your search
@@ -47,6 +47,8 @@ pub struct Launch {
|
||||
pub program: Option<(String, Vec<String>)>,
|
||||
pub cwd: PathBuf,
|
||||
pub env: Vec<(String, String)>,
|
||||
/// Shell integration makes it report its folder.
|
||||
pub reports: bool,
|
||||
}
|
||||
|
||||
/// A running program on a pseudo-terminal and the grid it draws into.
|
||||
@@ -239,6 +241,7 @@ mod tests {
|
||||
program: Some(("/bin/sh".into(), vec!["-c".into(), script.into()])),
|
||||
cwd: std::env::temp_dir(),
|
||||
env: vec![("ELY".into(), "ok".into())],
|
||||
reports: false,
|
||||
};
|
||||
let (pty, mut events) =
|
||||
spawn(&launch, size, (8, 16), config(&Settings::default())).expect("sh starts");
|
||||
@@ -298,6 +301,7 @@ mod tests {
|
||||
program: Some(("/bin/sh".into(), vec!["-c".into(), script.into()])),
|
||||
cwd: std::env::temp_dir(),
|
||||
env: Vec::new(),
|
||||
reports: false,
|
||||
};
|
||||
let (pty, mut events) =
|
||||
spawn(&launch, (20, 4), (8, 16), config(&Settings::default())).expect("sh starts");
|
||||
@@ -342,6 +346,7 @@ mod tests {
|
||||
program: None,
|
||||
cwd: "/nonexistent/ely".into(),
|
||||
env: Vec::new(),
|
||||
reports: false,
|
||||
};
|
||||
let error = spawn(&launch, (20, 4), (8, 16), config(&Settings::default()))
|
||||
.err()
|
||||
@@ -359,6 +364,7 @@ mod tests {
|
||||
program: Some(("/bin/sh".into(), vec!["-c".into(), "true".into()])),
|
||||
cwd: folder.clone(),
|
||||
env: Vec::new(),
|
||||
reports: false,
|
||||
};
|
||||
let started = spawn(&launch, (20, 4), (8, 16), config(&Settings::default()));
|
||||
std::fs::set_permissions(&folder, std::fs::Permissions::from_mode(0o700)).expect("700");
|
||||
|
||||
+5
-1
@@ -87,6 +87,7 @@ pub fn launch(shell: &str, cwd: PathBuf, dir: &Path) -> anyhow::Result<Launch> {
|
||||
program: (!shell.is_empty()).then(|| (path.clone(), Vec::new())),
|
||||
cwd,
|
||||
env: Vec::new(),
|
||||
reports: true,
|
||||
};
|
||||
let script = |name: &str| dir.join(name).display().to_string();
|
||||
match name.as_str() {
|
||||
@@ -130,7 +131,10 @@ pub fn launch(shell: &str, cwd: PathBuf, dir: &Path) -> anyhow::Result<Launch> {
|
||||
],
|
||||
));
|
||||
}
|
||||
_ => log::info!("shell integration: none for {path}; its folder goes unreported"),
|
||||
_ => {
|
||||
launch.reports = false;
|
||||
log::info!("shell integration: none for {path}; its folder goes unreported")
|
||||
}
|
||||
}
|
||||
log::info!("shell integration: {path} as {name}");
|
||||
Ok(launch)
|
||||
|
||||
Reference in new issue
Block a user