list command now shows a symbol in front of the current session

This commit is contained in:
Valerie Wolfe 2024-07-01 09:12:38 -04:00
parent 97f546a69c
commit e930af1027
4 changed files with 17 additions and 7 deletions

View file

@ -83,7 +83,7 @@ pub fn context_action(state: &State) {
return;
} else {
// fallback behavior is list
list();
list(&state);
}
}
@ -138,7 +138,7 @@ pub fn has(state: &mut State) {
exit( if success { 0 } else { 1 });
}
pub fn list() {
pub fn list(state: &State) {
// get session list
let sessions = util::get_sessions().unwrap_or(Vec::new());
@ -149,24 +149,28 @@ pub fn list() {
}
// get attached session symbol
let attach_symbol = env_var(env::ATTACH_SYMBOL);
let attach_symbol = env_var(env::ATTACH_SYMBOL);
let current_symbol = env_var(env::CURRENT_SYMBOL);
// pretty print session list
println!("sessions:");
for session in sessions.into_iter() {
let name = session.name.unwrap_or("[untitled]".to_string());
let id = session.id.unwrap();
let attached = session.attached.unwrap_or(0) > 0;
let current = Some(name.clone()) == state.title;
println!(
" {name} ({bold}{blue}{id}{reset}) {bold}{green}{attach}{reset}",
" {current} {name}{reset} ({bold}{blue}{id}{reset}) {bold}{green}{attach}{reset}",
// values
attach = if attached { attach_symbol.clone() } else { "".to_string() },
current = if current { current_symbol.clone() } else { " ".to_string() },
// formatting
bold = style::Bold,
blue = color::Fg(color::Blue),
green = color::Fg(color::LightGreen),
reset = style::Reset
reset = style::Reset,
);
}
}

View file

@ -3,6 +3,7 @@ use std::env::var;
pub type EnvVar = (&'static str, &'static str);
pub static ATTACH_SYMBOL: EnvVar = ("REMUX_ATTACH_SYMBOL", "*");
pub static CURRENT_SYMBOL: EnvVar = ("REMUX_CURRENT_SYMBOL", ">");
pub static NEW_WINDOW_NAME: EnvVar = ("REMUX_NEW_WINDOW", "");
pub static TMUX: &str = "TMUX";

View file

@ -148,10 +148,15 @@ REMUX_ATTACH_SYMBOL
by the 'list' command.
Default: '*'
REMUX_CURRENT_SYMBOL
Changes the symbol displayed to denote the current session
in the 'list' command.
Default: '>'
REMUX_NEW_WINDOW
Provides a default window name when creating a session with
the 'new' command, if not empty.
Default: ''"),
Default: (unset)"),
// not found
_ => error::no_help(topic.unwrap())

View file

@ -50,7 +50,7 @@ fn main() {
=> command::share::has(&mut state),
Some("l" | "ls" | "list")
=> command::share::list(),
=> command::share::list(&state),
Some("n" | "new")
=> command::share::new(&mut state),