# server.Server.format

- **Module:** server.Server
- **Package:** libtmux
- **Language:** Rust
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-rs/blob/8a648c0894dfffc9303583f753b6c8ae01f2fe76/crates/libtmux/src/server.rs#L938
- **Page:** https://libtmux.org/reference/rs/server-server-format/

```
server.Server.format(self, pane: Option<&Pane>, format: &str) -> Result<TmuxText, Error>
```

Expand a tmux format string and return the result.

This is `display-message -p`, whose target is a pane: the format is
evaluated against it, so `#{pane_current_command}` and the session and
window fields around it all resolve from there.

The result is [`TmuxText`] because a format can interpolate names that
are not valid UTF-8.

A literal `#(command)` starts `command` in a shell. Recursive expansion,
such as `#{E:status-left}`, can also expose a command stored in the
expanded value. The job is asynchronous, so this call may return before
it produces output. Escaping the outer template with `##` does not
escape text introduced by a recursive expansion. Use only validated,
simple `#{field}` lookups with untrusted input.

# Errors

Returns [`Error::ServerMismatch`] when the pane belongs to another
server, or an error when tmux rejects the format or the pane is gone.
