aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h51
1 files changed, 35 insertions, 16 deletions
diff --git a/tmux.h b/tmux.h
index 55f51361..726fdb26 100644
--- a/tmux.h
+++ b/tmux.h
@@ -57,7 +57,11 @@ struct mouse_event;
struct options;
struct options_array_item;
struct options_entry;
+struct screen_write_collect_item;
+struct screen_write_collect_line;
+struct screen_write_ctx;
struct session;
+struct tty_ctx;
struct tmuxpeer;
struct tmuxproc;
struct winlink;
@@ -788,13 +792,16 @@ struct screen {
};
/* Screen write context. */
-struct screen_write_collect_item;
-struct screen_write_collect_line;
+typedef void (*screen_write_init_ctx_cb)(struct screen_write_ctx *,
+ struct tty_ctx *);
struct screen_write_ctx {
struct window_pane *wp;
struct screen *s;
int sync;
+ screen_write_init_ctx_cb init_ctx_cb;
+ void *arg;
+
struct screen_write_collect_item *item;
u_int scrolled;
u_int bg;
@@ -1254,8 +1261,6 @@ struct tty {
struct termios tio;
struct grid_cell cell;
-
- int last_wp;
struct grid_cell last_cell;
#define TTY_NOCURSOR 0x1
@@ -1287,8 +1292,14 @@ struct tty {
};
/* TTY command context. */
+typedef void (*tty_ctx_redraw_cb)(const struct tty_ctx *);
+typedef int (*tty_ctx_set_client_cb)(struct tty_ctx *, struct client *);
struct tty_ctx {
- struct window_pane *wp;
+ struct screen *s;
+
+ tty_ctx_redraw_cb redraw_cb;
+ tty_ctx_set_client_cb set_client_cb;
+ void *arg;
const struct grid_cell *cell;
int wrapped;
@@ -1316,6 +1327,10 @@ struct tty_ctx {
/* The background colour used for clearing (erasing). */
u_int bg;
+ /* The default colours and palette. */
+ struct grid_cell defaults;
+ int *palette;
+
/* Containing region (usually window) offset and size. */
int bigger;
u_int wox;
@@ -1971,7 +1986,7 @@ void tty_update_window_offset(struct window *);
void tty_update_client_offset(struct client *);
void tty_raw(struct tty *, const char *);
void tty_attributes(struct tty *, const struct grid_cell *,
- struct window_pane *);
+ const struct grid_cell *, int *);
void tty_reset(struct tty *);
void tty_region_off(struct tty *);
void tty_margin_off(struct tty *);
@@ -1994,8 +2009,8 @@ void tty_send_requests(struct tty *);
void tty_stop_tty(struct tty *);
void tty_set_title(struct tty *, const char *);
void tty_update_mode(struct tty *, int, struct screen *);
-void tty_draw_line(struct tty *, struct window_pane *, struct screen *,
- u_int, u_int, u_int, u_int, u_int);
+void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int,
+ u_int, u_int, const struct grid_cell *, int *);
void tty_sync_start(struct tty *);
void tty_sync_end(struct tty *);
int tty_open(struct tty *, char **);
@@ -2026,6 +2041,7 @@ void tty_cmd_reverseindex(struct tty *, const struct tty_ctx *);
void tty_cmd_setselection(struct tty *, const struct tty_ctx *);
void tty_cmd_rawstring(struct tty *, const struct tty_ctx *);
void tty_cmd_syncstart(struct tty *, const struct tty_ctx *);
+void tty_default_colours(struct grid_cell *, struct window_pane *);
/* tty-term.c */
extern struct tty_terms tty_terms;
@@ -2344,8 +2360,8 @@ void input_reset(struct input_ctx *, int);
struct evbuffer *input_pending(struct input_ctx *);
void input_parse_pane(struct window_pane *);
void input_parse_buffer(struct window_pane *, u_char *, size_t);
-void input_parse_screen(struct input_ctx *, struct screen *, u_char *,
- size_t);
+void input_parse_screen(struct input_ctx *, struct screen *,
+ screen_write_init_ctx_cb, void *, u_char *, size_t);
/* input-key.c */
int input_key_pane(struct window_pane *, key_code, struct mouse_event *);
@@ -2428,8 +2444,11 @@ char *grid_view_string_cells(struct grid *, u_int, u_int, u_int);
/* screen-write.c */
void screen_write_make_list(struct screen *);
void screen_write_free_list(struct screen *);
-void screen_write_start(struct screen_write_ctx *, struct window_pane *,
- struct screen *);
+void screen_write_start_pane(struct screen_write_ctx *,
+ struct window_pane *, struct screen *);
+void screen_write_start(struct screen_write_ctx *, struct screen *);
+void screen_write_start_callback(struct screen_write_ctx *, struct screen *,
+ screen_write_init_ctx_cb, void *);
void screen_write_stop(struct screen_write_ctx *);
void screen_write_reset(struct screen_write_ctx *);
size_t printflike(1, 2) screen_write_strlen(const char *, ...);
@@ -2483,6 +2502,10 @@ void screen_write_collect_add(struct screen_write_ctx *,
void screen_write_cell(struct screen_write_ctx *, const struct grid_cell *);
void screen_write_setselection(struct screen_write_ctx *, u_char *, u_int);
void screen_write_rawstring(struct screen_write_ctx *, u_char *, u_int);
+void screen_write_alternateon(struct screen_write_ctx *,
+ struct grid_cell *, int);
+void screen_write_alternateoff(struct screen_write_ctx *,
+ struct grid_cell *, int);
/* screen-redraw.c */
void screen_redraw_screen(struct client *);
@@ -2571,10 +2594,6 @@ struct window_pane *window_pane_find_by_id_str(const char *);
struct window_pane *window_pane_find_by_id(u_int);
int window_pane_destroy_ready(struct window_pane *);
void window_pane_resize(struct window_pane *, u_int, u_int);
-void window_pane_alternate_on(struct window_pane *,
- struct grid_cell *, int);
-void window_pane_alternate_off(struct window_pane *,
- struct grid_cell *, int);
void window_pane_set_palette(struct window_pane *, u_int, int);
void window_pane_unset_palette(struct window_pane *, u_int);
void window_pane_reset_palette(struct window_pane *);