Merge master into command_parser

This commit is contained in:
Nicholas Marriott
2026-07-15 10:34:14 +01:00
64 changed files with 6643 additions and 1637 deletions

66
tmux.h
View File

@@ -1,4 +1,4 @@
/* $OpenBSD: tmux.h,v 1.1396 2026/07/10 15:45:11 nicm Exp $ */
/* $OpenBSD: tmux.h,v 1.1404 2026/07/14 19:07:03 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1170,8 +1170,13 @@ struct window_mode {
const char *name;
const char *default_format;
int flags;
#define WINDOW_MODE_HIDE_PANE_STATUS 0x1
#define WINDOW_MODE_NO_STACK 0x2
struct screen *(*init)(struct window_mode_entry *,
struct cmd_find_state *, struct args *);
struct cmdq_item *, struct cmd_find_state *,
struct args *);
void (*free)(struct window_mode_entry *);
void (*resize)(struct window_mode_entry *, u_int, u_int);
void (*update)(struct window_mode_entry *);
@@ -1305,6 +1310,7 @@ struct window_pane {
#define PANE_REDRAWSCROLLBAR 0x8000
#define PANE_DESTROYED 0x10000
#define PANE_CMDRUNNING 0x20000
#define PANE_ACTIVITY 0x40000
bitstr_t *sync_dirty;
u_int sync_dirty_size;
@@ -1432,6 +1438,10 @@ struct window {
uint64_t redraw_scene_generation;
struct menu_data *menu;
u_int menu_last_px;
u_int menu_last_py;
u_int last_new_pane_x;
u_int last_new_pane_y;
@@ -1782,6 +1792,8 @@ struct tty {
u_int mouse_last_y;
u_int mouse_last_b;
int mouse_drag_flag;
u_int mouse_drag_x;
u_int mouse_drag_y;
int mouse_scrolling_flag;
int mouse_slider_mpos;
int mouse_last_pane;
@@ -2103,6 +2115,8 @@ struct prompt_create_data {
struct grid_cell style;
struct grid_cell command_style;
const char *style_str;
const char *command_style_str;
enum screen_cursor_style cstyle;
enum screen_cursor_style command_cstyle;
int ccolour;
@@ -2225,7 +2239,7 @@ struct client {
#define CLIENT_CONTROL_NOOUTPUT 0x4000000
#define CLIENT_DEFAULTSOCKET 0x8000000
#define CLIENT_STARTSERVER 0x10000000
/* 0x20000000 unused */
#define CLIENT_REDRAWMENU 0x20000000
#define CLIENT_NOFORK 0x40000000
#define CLIENT_ACTIVEPANE 0x80000000ULL
#define CLIENT_CONTROL_PAUSEAFTER 0x100000000ULL
@@ -2241,7 +2255,8 @@ struct client {
CLIENT_REDRAWSTATUS| \
CLIENT_REDRAWSTATUSALWAYS| \
CLIENT_REDRAWBORDERS| \
CLIENT_REDRAWOVERLAY)
CLIENT_REDRAWOVERLAY| \
CLIENT_REDRAWMENU)
#define CLIENT_UNATTACHEDFLAGS \
(CLIENT_DEAD| \
CLIENT_SUSPENDED| \
@@ -2295,9 +2310,6 @@ struct client {
void *overlay_data;
struct event overlay_timer;
u_int menu_last_px;
u_int menu_last_py;
struct client_files files;
u_int source_file_depth;
@@ -2472,6 +2484,8 @@ struct spawn_context {
#define SPAWN_EMPTY 0x40
#define SPAWN_ZOOM 0x80
#define SPAWN_FLOATING 0x100
#define SPAWN_HORIZONTAL 0x200
#define SPAWN_SPLIT 0x400
};
/* Paste buffer. */
@@ -2719,6 +2733,7 @@ char *format_trim_right(const char *, u_int);
/* hooks.c */
void hooks_add_event(const char *);
int hooks_is_event(const char *);
int hooks_valid_event_name(const char *);
void hooks_build_events(void);
void hooks_run(struct cmdq_item *, const char *);
@@ -3094,6 +3109,7 @@ void cmdq_merge_formats(struct cmdq_item *, struct format_tree *);
struct cmdq_list *cmdq_new(void);
void cmdq_free(struct cmdq_list *);
const char *cmdq_get_name(struct cmdq_item *);
struct cmd *cmdq_get_cmd(struct cmdq_item *);
struct client *cmdq_get_client(struct cmdq_item *);
struct client *cmdq_get_target_client(struct cmdq_item *);
struct cmdq_state *cmdq_get_state(struct cmdq_item *);
@@ -3254,6 +3270,7 @@ void server_redraw_session_group(struct session *);
void server_status_session(struct session *);
void server_status_session_group(struct session *);
void server_redraw_window(struct window *);
void server_redraw_window_menu(struct window *);
void server_redraw_window_borders(struct window *);
void server_status_window(struct window *);
void server_lock(void);
@@ -3621,6 +3638,8 @@ int window_has_floating_panes(struct window *);
int window_has_pane(struct window *, struct window_pane *);
int window_set_active_pane(struct window *, struct window_pane *,
int);
void window_fire_pane_moved(struct window_pane *, struct window *,
int, struct window *, int);
void window_update_focus(struct window *);
void window_pane_update_focus(struct window_pane *);
void window_redraw_active_switch(struct window *,
@@ -3652,7 +3671,7 @@ void window_pane_clear_resizes(struct window_pane *,
struct window_pane_resize *);
int window_pane_set_mode(struct window_pane *,
struct window_pane *, const struct window_mode *,
struct cmd_find_state *, struct args *);
struct cmdq_item *, struct cmd_find_state *, struct args *);
void window_pane_reset_mode(struct window_pane *);
void window_pane_reset_mode_all(struct window_pane *);
int window_pane_key(struct window_pane *, struct client *,
@@ -3754,6 +3773,8 @@ void layout_make_leaf(struct layout_cell *, struct window_pane *);
void layout_make_node(struct layout_cell *, enum layout_type);
void layout_fix_zindexes(struct window *, struct layout_cell *);
int layout_cell_is_tiled(struct layout_cell *);
int layout_add_horizontal_border(struct layout_cell *,
struct layout_cell *, int);
void layout_fix_offsets(struct window *);
void layout_fix_panes(struct window *, struct window_pane *);
void layout_resize_adjust(struct window *, struct layout_cell *,
@@ -3791,10 +3812,13 @@ struct layout_cell *layout_get_tiled_cell(struct cmdq_item *, struct args *,
struct window *, struct window_pane *, int, char **);
struct layout_cell *layout_get_floating_cell(struct cmdq_item *, struct args *,
enum pane_lines, struct window *, struct window_pane *,
char **);
int, char **);
int layout_floating_args_parse(struct cmdq_item *, struct args *,
enum pane_lines, struct window *, struct layout_geometry *,
char **);
int layout_split_floating_cell(struct layout_cell *,
struct window *, struct layout_geometry *, enum pane_lines,
int, char **);
int layout_remove_tile(struct window *, struct layout_cell *);
int layout_insert_tile(struct window *, struct layout_cell *);
@@ -3874,6 +3898,9 @@ extern const struct window_mode window_switch_mode;
extern const struct window_mode window_clock_mode;
extern const char window_clock_table[14][5][5];
/* window-panes.c */
extern const struct window_mode window_panes_mode;
/* window-client.c */
extern const struct window_mode window_client_mode;
@@ -4041,20 +4068,21 @@ void menu_add_item(struct menu *, const struct menu_item *,
struct cmdq_item *, struct client *,
struct cmd_find_state *);
void menu_free(struct menu *);
struct menu_data *menu_prepare(struct menu *, int, int, struct cmdq_item *,
u_int, u_int, struct client *, enum box_lines, const char *,
const char *, const char *, struct cmd_find_state *,
menu_choice_cb, void *);
int menu_display(struct menu *, int, int, struct cmdq_item *,
u_int, u_int, struct client *, enum box_lines, const char *,
const char *, const char *, struct cmd_find_state *,
menu_choice_cb, void *);
struct screen *menu_mode_cb(struct client *, void *, u_int *, u_int *);
struct visible_ranges *menu_check_cb(struct client *, void *, u_int, u_int,
u_int);
void menu_draw_cb(struct client *, void *);
void menu_free_cb(struct client *, void *);
int menu_key_cb(struct client *, void *, struct key_event *);
void menu_close(struct window *);
void menu_destroy(struct window *);
void menu_update(struct menu_data *);
struct screen *menu_screen(struct menu_data *);
u_int menu_width(struct menu_data *);
u_int menu_height(struct menu_data *);
u_int menu_x(struct menu_data *);
u_int menu_y(struct menu_data *);
void menu_get_cursor(struct menu_data *, u_int *, u_int *);
void menu_resize(struct menu_data *, struct window *);
int menu_key(struct client *, struct menu_data *, struct key_event *);
/* popup.c */
#define POPUP_CLOSEEXIT 0x1