From 21d890e6df7e52ab229eec991f50b0c84df4c1a5 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 13 Oct 2025 07:29:53 +0000 Subject: [PATCH] Add buffer_full format variable, from Mohammad AlSaleh in GitHub issue 4630. --- format.c | 18 ++++++++++++++++++ tmux.1 | 1 + 2 files changed, 19 insertions(+) diff --git a/format.c b/format.c index 91669608..b5272422 100644 --- a/format.c +++ b/format.c @@ -1369,6 +1369,21 @@ format_cb_buffer_sample(struct format_tree *ft) return (NULL); } +/* Callback for buffer_full. */ +static void * +format_cb_buffer_full(struct format_tree *ft) +{ + size_t size; + const char *s; + + if (ft->pb != NULL) { + s = paste_buffer_data(ft->pb, &size); + if (s != NULL) + return (xstrndup(s, size)); + } + return (NULL); +} + /* Callback for buffer_size. */ static void * format_cb_buffer_size(struct format_tree *ft) @@ -3004,6 +3019,9 @@ static const struct format_table_entry format_table[] = { { "buffer_created", FORMAT_TABLE_TIME, format_cb_buffer_created }, + { "buffer_full", FORMAT_TABLE_STRING, + format_cb_buffer_full + }, { "buffer_mode_format", FORMAT_TABLE_STRING, format_cb_buffer_mode_format }, diff --git a/tmux.1 b/tmux.1 index 62e6ca96..0c3688df 100644 --- a/tmux.1 +++ b/tmux.1 @@ -6056,6 +6056,7 @@ The following variables are available, where appropriate: .It Li "alternate_saved_x" Ta "" Ta "Saved cursor X in alternate screen" .It Li "alternate_saved_y" Ta "" Ta "Saved cursor Y in alternate screen" .It Li "buffer_created" Ta "" Ta "Time buffer created" +.It Li "buffer_full" Ta "" Ta "Full buffer content" .It Li "buffer_name" Ta "" Ta "Name of buffer" .It Li "buffer_sample" Ta "" Ta "Sample of start of buffer" .It Li "buffer_size" Ta "" Ta "Size of the specified buffer in bytes"