use crate::app::window_state::WindowState;
use crate::pane::PaneId;
fn quote_pane_title(value: &str) -> String {
format!("'{}'", value.replace('\'', r"'\''"))
}
impl WindowState {
pub(crate) fn rename_pane(&mut self, pane_id: PaneId, name: &str) {
let name = name.trim();
let Some(tab) = self.tab_manager.active_tab_mut() else {
return;
};
if !tab.rename_pane(pane_id, name) {
return; }
tab.update_title(
self.config.load().tabs.tab_title_mode,
self.config.load().tabs.remote_tab_title_format,
self.config.load().tabs.remote_tab_title_osc_priority,
);
if let Some(tmux_pane_id) = self.tmux_state.tmux_pane_in_tab(tab.id, pane_id) {
if name.contains(['\n', '\r', '\0']) {
crate::debug_error!("MUX", "pane title not wire-safe, skipped daemon push");
} else {
let value = if name.is_empty() {
"''".to_string()
} else {
quote_pane_title(name)
};
let cmd = format!("select-pane -t %{tmux_pane_id} -T {value}");
let sent = match self.tmux_state.transport.as_ref() {
Some(transport) => transport.send_command(cmd.trim_end()).is_ok(),
None => self.write_to_gateway(&cmd),
};
if sent {
crate::debug_info!("TMUX", "Renamed pane %{tmux_pane_id}");
}
}
}
self.request_redraw();
}
}