Merge branch 'master' into local_windows

This commit is contained in:
Nicholas Marriott
2026-08-17 14:06:34 +01:00
79 changed files with 2614 additions and 453 deletions

39
tmux.h
View File

@@ -1,4 +1,4 @@
/* $OpenBSD: tmux.h,v 1.1411 2026/07/20 11:16:33 nicm Exp $ */
/* $OpenBSD: tmux.h,v 1.1423 2026/08/17 07:56:56 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1194,6 +1194,8 @@ struct window_mode {
int flags;
#define WINDOW_MODE_HIDE_PANE_STATUS 0x1
#define WINDOW_MODE_NO_STACK 0x2
#define WINDOW_MODE_FILL_WINDOW 0x4
#define WINDOW_MODE_HIDE_SCROLLBARS 0x8
struct screen *(*init)(struct window_mode_entry *,
struct cmdq_item *, struct cmd_find_state *,
@@ -1332,6 +1334,7 @@ struct window_pane {
#define PANE_DESTROYED 0x10000
#define PANE_CMDRUNNING 0x20000
#define PANE_ACTIVITY 0x40000
#define PANE_CLOSEONCLICK 0x80000
bitstr_t *sync_dirty;
u_int sync_dirty_size;
@@ -1471,7 +1474,8 @@ struct window {
int sb;
int sb_pos;
struct utf8_data *fill_character;
struct grid_cell inside_cell;
struct grid_cell outside_cell;
int flags;
#define WINDOW_BELL 0x1
#define WINDOW_ACTIVITY 0x2
@@ -1727,6 +1731,7 @@ struct tty_term {
#define TERM_RGBCOLOURS 0x10
#define TERM_VT100LIKE 0x20
#define TERM_SIXEL 0x40
#define TERM_INVALIDMS 0x80
int flags;
LIST_ENTRY(tty_term) entry;
@@ -2239,10 +2244,13 @@ struct client {
struct event click_timer;
int click_loc;
int click_wp;
struct event exit_timer;
u_int click_button;
struct mouse_event click_event;
struct status_line status;
struct event cycle_timer;
enum client_theme theme;
struct input_requests input_requests;
@@ -2285,7 +2293,7 @@ struct client {
/* 0x800000000ULL unused */
#define CLIENT_BRACKETPASTING 0x1000000000ULL
#define CLIENT_ASSUMEPASTING 0x2000000000ULL
/* 0x4000000000ULL unused */
#define CLIENT_WRITE_ACK 0x4000000000ULL
#define CLIENT_NO_DETACH_ON_DESTROY 0x8000000000ULL
#define CLIENT_ALLREDRAWFLAGS \
(CLIENT_REDRAWWINDOW| \
@@ -2807,6 +2815,10 @@ void hooks_monitor_add(struct cmdq_item *, struct options *,
void hooks_monitor_remove(struct options *, const char *);
void hooks_monitor_free(void *);
char *hooks_monitor_to_string(struct options_entry *);
int hooks_monitor_get(struct options_entry *, enum monitor_type *, int *,
const char **);
u_int hooks_monitor_get_fire_count(struct options_entry *);
time_t hooks_monitor_get_fire_time(struct options_entry *);
/* options.c */
struct options *options_create(struct options *);
@@ -2824,6 +2836,9 @@ const char *options_name(struct options_entry *);
struct options *options_owner(struct options_entry *);
void *options_get_monitor_data(struct options_entry *);
void options_set_monitor_data(struct options_entry *, void *);
void options_hook_fired(struct options_entry *);
u_int options_get_fire_count(struct options_entry *);
time_t options_get_fire_time(struct options_entry *);
const struct options_table_entry *options_table_entry(struct options_entry *);
struct options_entry *options_get_only(struct options *, const char *);
struct options_entry *options_get(struct options *, const char *);
@@ -3291,6 +3306,7 @@ void file_write_close(struct client_files *, struct imsg *);
void file_read_open(struct client_files *, struct tmuxpeer *, struct imsg *,
int, int, client_file_cb, void *);
int file_write_ready(struct client_files *, struct imsg *);
int file_write_done(struct client_files *, struct imsg *);
int file_read_data(struct client_files *, struct imsg *);
int file_read_done(struct client_files *, struct imsg *);
void file_read_cancel(struct client_files *, struct imsg *);
@@ -3507,7 +3523,7 @@ void grid_clear_history(struct grid *);
const struct grid_line *grid_peek_line(struct grid *, u_int);
void grid_get_cell(struct grid *, u_int, u_int, struct grid_cell *);
void grid_set_cell(struct grid *, u_int, u_int, const struct grid_cell *);
void grid_set_padding(struct grid *, u_int, u_int);
void grid_set_padding(struct grid *, u_int, u_int, int);
void grid_set_cells(struct grid *, u_int, u_int, const struct grid_cell *,
const char *, size_t);
struct grid_line *grid_get_line(struct grid *, u_int);
@@ -3524,6 +3540,7 @@ void grid_reflow(struct grid *, u_int);
void grid_wrap_position(struct grid *, u_int, u_int, u_int *, u_int *);
void grid_unwrap_position(struct grid *, u_int *, u_int *, u_int, u_int);
u_int grid_line_length(struct grid *, u_int);
u_int grid_line_limit(struct grid *, u_int);
int grid_in_set(struct grid *, u_int, u_int, const char *);
/* grid-reader.c */
@@ -3551,7 +3568,7 @@ void grid_reader_cursor_back_to_indentation(struct grid_reader *);
void grid_view_get_cell(struct grid *, u_int, u_int, struct grid_cell *);
void grid_view_set_cell(struct grid *, u_int, u_int,
const struct grid_cell *);
void grid_view_set_padding(struct grid *, u_int, u_int);
void grid_view_set_padding(struct grid *, u_int, u_int, int);
void grid_view_set_cells(struct grid *, u_int, u_int,
const struct grid_cell *, const char *, size_t);
void grid_view_clear_history(struct grid *, u_int);
@@ -3804,7 +3821,6 @@ void *window_pane_get_new_data(struct window_pane *,
struct window_pane_offset *, size_t *);
void window_pane_update_used_data(struct window_pane *,
struct window_pane_offset *, size_t);
void window_set_fill_character(struct window *);
void window_pane_default_cursor(struct window_pane *);
int window_pane_mode(struct window_pane *);
int window_pane_show_scrollbar(struct window_pane *);
@@ -3832,8 +3848,10 @@ struct style_range *window_pane_status_get_range(struct window_pane *, u_int,
int window_pane_is_floating(struct window_pane *);
/* window-border.c */
void window_get_border_cell(struct window *, struct window_pane *,
enum pane_lines, int, struct grid_cell *);
void window_set_fill_cells(struct window *);
void window_get_border_cell(struct window_pane *, enum pane_lines,
int, struct grid_cell *);
void window_get_fill_cell(struct window *, int, struct grid_cell *);
void window_pane_get_border_cell(struct window_pane *, int,
struct grid_cell *);
void window_pane_get_border_style(struct window_pane *,
@@ -4027,9 +4045,12 @@ int monitor_parse(const char *, char **, enum monitor_type *, int *,
void monitor_add(struct monitor_set *, const char *, enum monitor_type, int,
const char *, int);
void monitor_remove(struct monitor_set *, const char *);
u_int monitor_get_fire_count(struct monitor_set *, const char *);
time_t monitor_get_fire_time(struct monitor_set *, const char *);
/* control.c */
void control_discard(struct client *);
void control_discard_all(struct client *);
void control_start(struct client *);
void control_ready(struct client *);
void control_stop(struct client *);
@@ -4045,6 +4066,8 @@ struct window_pane_offset *control_pane_offset(struct client *,
struct window_pane *, int *);
void control_reset_offsets(struct client *);
void printflike(2, 3) control_write(struct client *, const char *, ...);
void printflike(2, 3) control_notify_write(struct client *, const char *, ...);
void control_write_guard(struct client *, const char *, long, u_int, int);
void control_write_output(struct client *, struct window_pane *);
int control_all_done(struct client *);
void control_add_sub(struct client *, const char *, enum monitor_type, int,