Add buffer_full format variable, from Mohammad AlSaleh in GitHub issue
authornicm <nicm>
Mon, 13 Oct 2025 07:29:53 +0000 (13 07:29 +0000)
committernicm <nicm>
Mon, 13 Oct 2025 07:29:53 +0000 (13 07:29 +0000)
4630.

format.c
tmux.1

index 9166960..b527242 100644 (file)
--- 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 62e6ca9..0c3688d 100644 (file)
--- 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"