diff options
Diffstat (limited to 'tmux.h')
-rw-r--r-- | tmux.h | 85 |
1 files changed, 66 insertions, 19 deletions
@@ -635,9 +635,50 @@ struct grid { struct grid_line *linedata; }; +/* Style alignment. */ +enum style_align { + STYLE_ALIGN_DEFAULT, + STYLE_ALIGN_LEFT, + STYLE_ALIGN_CENTRE, + STYLE_ALIGN_RIGHT +}; + +/* Style list. */ +enum style_list { + STYLE_LIST_OFF, + STYLE_LIST_ON, + STYLE_LIST_FOCUS, + STYLE_LIST_LEFT_MARKER, + STYLE_LIST_RIGHT_MARKER, +}; + +/* Style range. */ +enum style_range_type { + STYLE_RANGE_NONE, + STYLE_RANGE_LEFT, + STYLE_RANGE_RIGHT, + STYLE_RANGE_WINDOW +}; +struct style_range { + enum style_range_type type; + u_int argument; + + u_int start; + u_int end; /* not included */ + + TAILQ_ENTRY(style_range) entry; +}; +TAILQ_HEAD(style_ranges, style_range); + /* Style option. */ struct style { - struct grid_cell gc; + struct grid_cell gc; + + enum style_align align; + enum style_list list; + + enum style_range_type range_type; + u_int range_argument; }; /* Hook data structures. */ @@ -869,10 +910,6 @@ struct winlink { struct session *session; struct window *window; - size_t status_width; - struct grid_cell status_cell; - char *status_text; - int flags; #define WINLINK_BELL 0x1 #define WINLINK_ACTIVITY 0x2 @@ -954,6 +991,7 @@ struct session { struct winlinks windows; int statusat; + u_int statuslines; struct hooks *hooks; struct options *options; @@ -998,7 +1036,9 @@ struct mouse_event { int valid; key_code key; + int statusat; + u_int statuslines; u_int x; u_int y; @@ -1313,17 +1353,20 @@ struct cmd_entry { }; /* Status line. */ +#define STATUS_LINES_LIMIT 5 +struct status_line_entry { + char *expanded; + struct style_ranges ranges; +}; struct status_line { - struct event timer; + struct event timer; - struct screen screen; - struct screen *active; - int references; - - int window_list_offset; + struct screen screen; + struct screen *active; + int references; - u_int left_size; - u_int right_size; + struct grid_cell style; + struct status_line_entry entries[STATUS_LINES_LIMIT]; }; /* Client connection. */ @@ -1582,6 +1625,7 @@ char *paste_make_sample(struct paste_buffer *); #define FORMAT_PANE 0x80000000U #define FORMAT_WINDOW 0x40000000U struct format_tree; +const char *format_skip(const char *s, const char *end); int format_true(const char *); struct format_tree *format_create(struct client *, struct cmdq_item *, int, int); @@ -1604,6 +1648,14 @@ void format_defaults_paste_buffer(struct format_tree *, struct paste_buffer *); void format_lost_client(struct client *); +/* format-draw.c */ +void format_draw(struct screen_write_ctx *, + const struct grid_cell *, u_int, const char *, + struct style_ranges *); +u_int format_width(const char *); +char *format_trim_left(const char *, u_int); +char *format_trim_right(const char *, u_int); + /* hooks.c */ struct hook; struct hooks *hooks_get(struct session *); @@ -1979,7 +2031,7 @@ void status_timer_start_all(void); void status_update_cache(struct session *); int status_at_line(struct client *); u_int status_line_size(struct client *); -struct window *status_get_window_at(struct client *, u_int); +struct style_range *status_get_range(struct client *, u_int, u_int); void status_init(struct client *); void status_free(struct client *); int status_redraw(struct client *); @@ -2079,9 +2131,6 @@ void screen_write_start(struct screen_write_ctx *, struct window_pane *, struct screen *); void screen_write_stop(struct screen_write_ctx *); void screen_write_reset(struct screen_write_ctx *); -size_t printflike(1, 2) screen_write_cstrlen(const char *, ...); -void printflike(4, 5) screen_write_cnputs(struct screen_write_ctx *, - ssize_t, const struct grid_cell *, const char *, ...); size_t printflike(1, 2) screen_write_strlen(const char *, ...); void printflike(3, 4) screen_write_puts(struct screen_write_ctx *, const struct grid_cell *, const char *, ...); @@ -2418,8 +2467,6 @@ u_int utf8_strwidth(const struct utf8_data *, ssize_t); struct utf8_data *utf8_fromcstr(const char *); char *utf8_tocstr(struct utf8_data *); u_int utf8_cstrwidth(const char *); -char *utf8_rtrimcstr(const char *, u_int); -char *utf8_trimcstr(const char *, u_int); char *utf8_padcstr(const char *, u_int); /* procname.c */ |