Add next_session_id format with the next session ID, GitHub issue 3078.

This commit is contained in:
nicm 2022-02-22 11:10:41 +00:00 committed by Nicholas Marriott
parent 92a26a8b8c
commit a26ebccd42
4 changed files with 18 additions and 1 deletions

View File

@ -1650,6 +1650,13 @@ format_cb_mouse_y(struct format_tree *ft)
return (NULL);
}
/* Callback for next_session_id. */
static void *
format_cb_next_session_id(__unused struct format_tree *ft)
{
return (format_printf("$%u", next_session_id));
}
/* Callback for origin_flag. */
static void *
format_cb_origin_flag(struct format_tree *ft)
@ -2707,6 +2714,9 @@ static const struct format_table_entry format_table[] = {
{ "mouse_y", FORMAT_TABLE_STRING,
format_cb_mouse_y
},
{ "next_session_id", FORMAT_TABLE_STRING,
format_cb_next_session_id
},
{ "origin_flag", FORMAT_TABLE_STRING,
format_cb_origin_flag
},

View File

@ -27,7 +27,7 @@
#include "tmux.h"
struct sessions sessions;
static u_int next_session_id;
u_int next_session_id;
struct session_groups session_groups = RB_INITIALIZER(&session_groups);
static void session_free(int, short, void *);

6
tmux.1
View File

@ -4592,6 +4592,11 @@ Run when a session is renamed.
Run when a window is linked into a session.
.It window-renamed
Run when a window is renamed.
.It window-resized
Run when a window is resized.
This may be after the
.Ar client-resized
hook is run.
.It window-unlinked
Run when a window is unlinked from a session.
.El
@ -5096,6 +5101,7 @@ The following variables are available, where appropriate:
.It Li "mouse_word" Ta "" Ta "Word under mouse, if any"
.It Li "mouse_x" Ta "" Ta "Mouse X position, if any"
.It Li "mouse_y" Ta "" Ta "Mouse Y position, if any"
.It Li "next_session_id" Ta "" Ta "Unique session ID for next new session"
.It Li "origin_flag" Ta "" Ta "Pane origin flag"
.It Li "pane_active" Ta "" Ta "1 if active pane"
.It Li "pane_at_bottom" Ta "" Ta "1 if pane is at the bottom of window"

1
tmux.h
View File

@ -3119,6 +3119,7 @@ void control_notify_session_window_changed(struct session *);
/* session.c */
extern struct sessions sessions;
extern u_int next_session_id;
int session_cmp(struct session *, struct session *);
RB_PROTOTYPE(sessions, session, entry, session_cmp);
int session_alive(struct session *);