On this page
server.settings.Server.set_hooks
- Module
- server.settings
- Declared in
- Server
- Package
- libtmux
- Source
- crates/libtmux/src/server/settings.rs
- set_hooks ( self , name : &str , hooks : &IndexedHooks , replace : ReplaceMode ) Result<(), Error>
-
Write a whole hook at once.
ReplaceMode::Replaceclears the hook first, so only what is written remains;ReplaceMode::Mergeleaves entries at indices the write does not name.Sent as one tmux invocation rather than one per index. That costs one process instead of several, but it is not atomic: tmux applies a shared invocation in order and stops at the first refusal, so a rejected entry leaves the ones before it written.
Errors
Returns an error when tmux rejects the name or any command.
Examples
use std::collections::BTreeMap; use libtmux::{IndexedHooks, ReplaceMode, TmuxText}; let guard = libtmux::test::TestServer::new().await?; let server = guard.server(); let mut entries = BTreeMap::new(); entries.insert(0, TmuxText::from(b"display-message first".to_vec())); entries.insert(3, TmuxText::from(b"display-message fourth".to_vec())); server .set_hooks("alert-bell", &IndexedHooks::from(entries), ReplaceMode::Replace) .await?; let written = server.hook("alert-bell").await?.expect("the hook is set"); assert_eq!(written.len(), 2); assert!(written.get(1).is_none(), "the gap is kept"); guard.shutdown().await?;
0 declared, 0 inherited