mirror of
https://github.com/tmux/tmux.git
synced 2026-10-07 02:04:22 +00:00
Add a generation counter to pane output, from Michael K Darling.
This commit is contained in:
18
format.c
18
format.c
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: format.c,v 1.414 2026/08/31 19:27:46 nicm Exp $ */
|
/* $OpenBSD: format.c,v 1.415 2026/08/31 19:34:09 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -2293,6 +2293,19 @@ format_cb_pane_last_output_time(struct format_tree *ft)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Callback for pane_output_generation. */
|
||||||
|
static void *
|
||||||
|
format_cb_pane_output_generation(struct format_tree *ft)
|
||||||
|
{
|
||||||
|
unsigned long long value;
|
||||||
|
|
||||||
|
if (ft->wp != NULL) {
|
||||||
|
value = ft->wp->output_generation;
|
||||||
|
return (format_printf("%llu", value));
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Callback for pane_last_prompt_time. */
|
/* Callback for pane_last_prompt_time. */
|
||||||
static void *
|
static void *
|
||||||
format_cb_pane_last_prompt_time(struct format_tree *ft)
|
format_cb_pane_last_prompt_time(struct format_tree *ft)
|
||||||
@@ -3871,6 +3884,9 @@ static const struct format_table_entry format_table[] = {
|
|||||||
{ "pane_mode", FORMAT_TABLE_STRING,
|
{ "pane_mode", FORMAT_TABLE_STRING,
|
||||||
format_cb_pane_mode
|
format_cb_pane_mode
|
||||||
},
|
},
|
||||||
|
{ "pane_output_generation", FORMAT_TABLE_STRING,
|
||||||
|
format_cb_pane_output_generation
|
||||||
|
},
|
||||||
{ "pane_path", FORMAT_TABLE_STRING,
|
{ "pane_path", FORMAT_TABLE_STRING,
|
||||||
format_cb_pane_path
|
format_cb_pane_path
|
||||||
},
|
},
|
||||||
|
|||||||
3
input.c
3
input.c
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: input.c,v 1.270 2026/08/17 20:04:00 nicm Exp $ */
|
/* $OpenBSD: input.c,v 1.271 2026/08/31 19:34:09 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -1049,6 +1049,7 @@ input_parse_buffer(struct window_pane *wp, const u_char *buf, size_t len)
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
wp->output_generation++;
|
||||||
window_update_activity(wp->window);
|
window_update_activity(wp->window);
|
||||||
if (~wp->flags & PANE_ACTIVITY) {
|
if (~wp->flags & PANE_ACTIVITY) {
|
||||||
wp->flags |= PANE_ACTIVITY;
|
wp->flags |= PANE_ACTIVITY;
|
||||||
|
|||||||
3
tmux.1
3
tmux.1
@@ -1,4 +1,4 @@
|
|||||||
.\" $OpenBSD: tmux.1,v 1.1161 2026/08/31 19:27:46 nicm Exp $
|
.\" $OpenBSD: tmux.1,v 1.1162 2026/08/31 19:34:09 nicm Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
@@ -7418,6 +7418,7 @@ The following variables are available, where appropriate:
|
|||||||
.It Li "pane_marked_set" Ta "" Ta "1 if a marked pane is set"
|
.It Li "pane_marked_set" Ta "" Ta "1 if a marked pane is set"
|
||||||
.It Li "pane_modal_flag" Ta "" Ta "1 if pane is modal"
|
.It Li "pane_modal_flag" Ta "" Ta "1 if pane is modal"
|
||||||
.It Li "pane_mode" Ta "" Ta "Name of pane mode, if any"
|
.It Li "pane_mode" Ta "" Ta "Name of pane mode, if any"
|
||||||
|
.It Li "pane_output_generation" Ta "" Ta "Generation incremented when pane output is processed"
|
||||||
.It Li "pane_path" Ta "" Ta "Path of pane (can be set by application)"
|
.It Li "pane_path" Ta "" Ta "Path of pane (can be set by application)"
|
||||||
.It Li "pane_pid" Ta "" Ta "PID of first process in pane"
|
.It Li "pane_pid" Ta "" Ta "PID of first process in pane"
|
||||||
.It Li "pane_pipe" Ta "" Ta "1 if pane is being piped"
|
.It Li "pane_pipe" Ta "" Ta "1 if pane is being piped"
|
||||||
|
|||||||
5
tmux.h
5
tmux.h
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: tmux.h,v 1.1431 2026/08/25 08:37:08 nicm Exp $ */
|
/* $OpenBSD: tmux.h,v 1.1432 2026/08/31 19:34:09 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -1323,9 +1323,10 @@ struct window_pane {
|
|||||||
char tty[TTY_NAME_MAX];
|
char tty[TTY_NAME_MAX];
|
||||||
int status;
|
int status;
|
||||||
struct timeval dead_time;
|
struct timeval dead_time;
|
||||||
struct cmdq_item *wait_item; /* new-pane -W: waiting for pane exit */
|
struct cmdq_item *wait_item;
|
||||||
struct spawn_editor_state *editor;
|
struct spawn_editor_state *editor;
|
||||||
|
|
||||||
|
uint64_t output_generation;
|
||||||
time_t last_output_time;
|
time_t last_output_time;
|
||||||
time_t last_prompt_time;
|
time_t last_prompt_time;
|
||||||
time_t cmd_start_time;
|
time_t cmd_start_time;
|
||||||
|
|||||||
Reference in New Issue
Block a user