aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h94
1 files changed, 68 insertions, 26 deletions
diff --git a/tmux.h b/tmux.h
index a6770e52..c7bebe6d 100644
--- a/tmux.h
+++ b/tmux.h
@@ -20,18 +20,20 @@
#define TMUX_H
#include <sys/time.h>
-#include <sys/queue.h>
-#include <sys/tree.h>
+#include <sys/uio.h>
-#include <bitstring.h>
#include <event.h>
#include <limits.h>
#include <stdarg.h>
-#include <stdint.h>
#include <stdio.h>
#include <termios.h>
#include <wchar.h>
+#ifdef HAVE_UTEMPTER
+#include <utempter.h>
+#endif
+
+#include "compat.h"
#include "xmalloc.h"
extern char **environ;
@@ -57,11 +59,17 @@ struct tmuxproc;
#define PROTOCOL_VERSION 8
/* Default global configuration file. */
+#ifndef TMUX_CONF
#define TMUX_CONF "/etc/tmux.conf"
+#endif
/* Minimum layout cell size, NOT including border lines. */
#define PANE_MINIMUM 1
+/* Minimum and maximum window size. */
+#define WINDOW_MINIMUM PANE_MINIMUM
+#define WINDOW_MAXIMUM 10000
+
/* Automatic name refresh interval, in microseconds. Must be < 1 second. */
#define NAME_INTERVAL 500000
@@ -776,6 +784,7 @@ struct window {
struct timeval name_time;
struct event alerts_timer;
+ struct event offset_timer;
struct timeval activity_time;
@@ -796,9 +805,7 @@ struct window {
#define WINDOW_ACTIVITY 0x2
#define WINDOW_SILENCE 0x4
#define WINDOW_ZOOMED 0x8
-#define WINDOW_FORCEWIDTH 0x10
-#define WINDOW_FORCEHEIGHT 0x20
-#define WINDOW_STYLECHANGED 0x40
+#define WINDOW_STYLECHANGED 0x10
#define WINDOW_ALERTFLAGS (WINDOW_BELL|WINDOW_ACTIVITY|WINDOW_SILENCE)
int alerts_queued;
@@ -839,6 +846,11 @@ struct winlink {
RB_HEAD(winlinks, winlink);
TAILQ_HEAD(winlink_stack, winlink);
+/* Window size option. */
+#define WINDOW_SIZE_LARGEST 0
+#define WINDOW_SIZE_SMALLEST 1
+#define WINDOW_SIZE_MANUAL 2
+
/* Layout direction. */
enum layout_type {
LAYOUT_LEFTRIGHT,
@@ -897,9 +909,6 @@ struct session {
struct event lock_timer;
- u_int sx;
- u_int sy;
-
struct winlink *curw;
struct winlink_stack lastw;
struct winlinks windows;
@@ -959,6 +968,9 @@ struct mouse_event {
u_int ly;
u_int lb;
+ u_int ox;
+ u_int oy;
+
int s;
int w;
int wp;
@@ -1006,6 +1018,12 @@ struct tty {
u_int cstyle;
char *ccolour;
+ int oflag;
+ u_int oox;
+ u_int ooy;
+ u_int osx;
+ u_int osy;
+
int mode;
u_int rlower;
@@ -1086,11 +1104,19 @@ struct tty_ctx {
u_int orupper;
u_int orlower;
+ /* Pane offset. */
u_int xoff;
u_int yoff;
/* The background colour used for clearing (erasing). */
u_int bg;
+
+ /* Window offset and size. */
+ int bigger;
+ u_int ox;
+ u_int oy;
+ u_int sx;
+ u_int sy;
};
/* Saved message entry. */
@@ -1328,11 +1354,16 @@ struct client {
#define CLIENT_SIZECHANGED 0x400000
#define CLIENT_STATUSOFF 0x800000
#define CLIENT_REDRAWSTATUSALWAYS 0x1000000
-#define CLIENT_ALLREDRAWFLAGS \
- (CLIENT_REDRAWWINDOW| \
- CLIENT_REDRAWSTATUS| \
- CLIENT_REDRAWSTATUSALWAYS| \
+#define CLIENT_ALLREDRAWFLAGS \
+ (CLIENT_REDRAWWINDOW| \
+ CLIENT_REDRAWSTATUS| \
+ CLIENT_REDRAWSTATUSALWAYS| \
CLIENT_REDRAWBORDERS)
+#define CLIENT_NOSIZEFLAGS \
+ (CLIENT_EXIT| \
+ CLIENT_DEAD| \
+ CLIENT_SUSPENDED| \
+ CLIENT_DETACHING)
int flags;
struct key_table *keytable;
@@ -1370,6 +1401,10 @@ struct client {
int references;
+ void *pan_window;
+ u_int pan_ox;
+ u_int pan_oy;
+
TAILQ_ENTRY(client) entry;
};
TAILQ_HEAD(clients, client);
@@ -1430,6 +1465,7 @@ struct options_table_entry {
const char *separator;
const char *style;
+ const char *pattern;
};
/* Common command usages. */
@@ -1630,7 +1666,10 @@ struct environ *environ_for_session(struct session *, int);
/* tty.c */
void tty_create_log(void);
-u_int tty_status_lines(struct client *);
+int tty_window_bigger(struct tty *);
+int tty_window_offset(struct tty *, u_int *, u_int *, u_int *, u_int *);
+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 *,
const struct window_pane *);
@@ -1655,10 +1694,8 @@ void tty_start_tty(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_pane(struct tty *, const struct window_pane *, u_int, u_int,
- u_int);
void tty_draw_line(struct tty *, const struct window_pane *, struct screen *,
- u_int, u_int, u_int);
+ u_int, u_int, u_int, u_int, u_int);
int tty_open(struct tty *, char **);
void tty_close(struct tty *);
void tty_free(struct tty *);
@@ -1891,9 +1928,9 @@ void server_unzoom_window(struct window *);
/* status.c */
void status_timer_start(struct client *);
void status_timer_start_all(void);
-void status_update_saved(struct session *s);
+void status_update_saved(struct session *);
int status_at_line(struct client *);
-u_int status_line_size(struct session *);
+u_int status_line_size(struct client *);
struct window *status_get_window_at(struct client *, u_int);
int status_redraw(struct client *);
void printflike(2, 3) status_message_set(struct client *, const char *, ...);
@@ -1909,6 +1946,9 @@ void status_prompt_load_history(void);
void status_prompt_save_history(void);
/* resize.c */
+void resize_window(struct window *, u_int, u_int);
+void default_window_size(struct session *, struct window *, u_int *,
+ u_int *, int);
void recalculate_sizes(void);
/* input.c */
@@ -1976,10 +2016,10 @@ void grid_view_scroll_region_up(struct grid *, u_int, u_int, u_int);
void grid_view_scroll_region_down(struct grid *, u_int, u_int, u_int);
void grid_view_insert_lines(struct grid *, u_int, u_int, u_int);
void grid_view_insert_lines_region(struct grid *, u_int, u_int, u_int,
- u_int);
+ u_int);
void grid_view_delete_lines(struct grid *, u_int, u_int, u_int);
void grid_view_delete_lines_region(struct grid *, u_int, u_int, u_int,
- u_int);
+ u_int);
void grid_view_insert_cells(struct grid *, u_int, u_int, u_int, u_int);
void grid_view_delete_cells(struct grid *, u_int, u_int, u_int, u_int);
char *grid_view_string_cells(struct grid *, u_int, u_int, u_int);
@@ -2167,7 +2207,7 @@ void layout_set_size(struct layout_cell *, u_int, u_int, u_int,
void layout_make_leaf(struct layout_cell *, struct window_pane *);
void layout_make_node(struct layout_cell *, enum layout_type);
void layout_fix_offsets(struct layout_cell *);
-void layout_fix_panes(struct window *, u_int, u_int);
+void layout_fix_panes(struct window *);
void layout_resize_adjust(struct window *, struct layout_cell *,
enum layout_type, int);
void layout_init(struct window *, struct window_pane *);
@@ -2283,7 +2323,7 @@ struct session *session_find_by_id_str(const char *);
struct session *session_find_by_id(u_int);
struct session *session_create(const char *, const char *, int, char **,
const char *, const char *, struct environ *,
- struct termios *, int, u_int, u_int, char **);
+ struct options *, struct termios *, int, char **);
void session_destroy(struct session *, const char *);
void session_add_ref(struct session *, const char *);
void session_remove_ref(struct session *, const char *);
@@ -2332,8 +2372,10 @@ char *utf8_rtrimcstr(const char *, u_int);
char *utf8_trimcstr(const char *, u_int);
char *utf8_padcstr(const char *, u_int);
-/* procname.c */
-char *get_proc_name(int, char *);
+/* osdep-*.c */
+char *osdep_get_name(int, char *);
+char *osdep_get_cwd(int);
+struct event_base *osdep_event_init(void);
/* log.c */
void log_add_level(void);