aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2016-10-12 09:45:49 +0100
committerThomas Adam <thomas@xteddy.org>2016-10-12 09:45:49 +0100
commitb9dc855016cf79c8bb8469c272dbc6bca24deadc (patch)
treea2049bea7b17ededbd12b77110d47353ed832e46 /tmux.h
parent27126f87976c63161fcae2ab1eb9c6df726a84ff (diff)
parent5c49e1d0c1afaf98512b2ffd1f31d91fecff9851 (diff)
downloadrtmux-b9dc855016cf79c8bb8469c272dbc6bca24deadc.tar.gz
rtmux-b9dc855016cf79c8bb8469c272dbc6bca24deadc.tar.bz2
rtmux-b9dc855016cf79c8bb8469c272dbc6bca24deadc.zip
Merge branch 'obsd-master'
Conflicts: format.c osdep-openbsd.c
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h113
1 files changed, 26 insertions, 87 deletions
diff --git a/tmux.h b/tmux.h
index 2c98b2f5..1bcf5503 100644
--- a/tmux.h
+++ b/tmux.h
@@ -40,9 +40,11 @@
extern char **environ;
+struct args;
struct client;
struct environ;
struct input_ctx;
+struct mode_key_cmdstr;
struct mouse_event;
struct options;
struct session;
@@ -106,6 +108,9 @@ struct tmuxproc;
#define KEYC_IS_MOUSE(key) (((key) & KEYC_MASK_KEY) >= KEYC_MOUSE && \
((key) & KEYC_MASK_KEY) < KEYC_BSPACE)
+/* Multiple click timeout. */
+#define KEYC_CLICK_TIMEOUT 300
+
/* Mouse key codes. */
#define KEYC_MOUSE_KEY(name) \
KEYC_ ## name ## _PANE, \
@@ -144,6 +149,12 @@ enum {
KEYC_MOUSE_KEY(MOUSEDRAGEND3),
KEYC_MOUSE_KEY(WHEELUP),
KEYC_MOUSE_KEY(WHEELDOWN),
+ KEYC_MOUSE_KEY(DOUBLECLICK1),
+ KEYC_MOUSE_KEY(DOUBLECLICK2),
+ KEYC_MOUSE_KEY(DOUBLECLICK3),
+ KEYC_MOUSE_KEY(TRIPLECLICK1),
+ KEYC_MOUSE_KEY(TRIPLECLICK2),
+ KEYC_MOUSE_KEY(TRIPLECLICK3),
/* Backspace key. */
KEYC_BSPACE,
@@ -513,58 +524,6 @@ enum mode_key_cmd {
MODEKEYCHOICE_TREE_EXPAND_ALL,
MODEKEYCHOICE_TREE_TOGGLE,
MODEKEYCHOICE_UP,
-
- /* Copy keys. */
- MODEKEYCOPY_APPENDSELECTION,
- MODEKEYCOPY_BACKTOINDENTATION,
- MODEKEYCOPY_BOTTOMLINE,
- MODEKEYCOPY_CANCEL,
- MODEKEYCOPY_CLEARSELECTION,
- MODEKEYCOPY_COPYPIPE,
- MODEKEYCOPY_COPYLINE,
- MODEKEYCOPY_COPYENDOFLINE,
- MODEKEYCOPY_COPYSELECTION,
- MODEKEYCOPY_DOWN,
- MODEKEYCOPY_ENDOFLINE,
- MODEKEYCOPY_GOTOLINE,
- MODEKEYCOPY_HALFPAGEDOWN,
- MODEKEYCOPY_HALFPAGEUP,
- MODEKEYCOPY_HISTORYBOTTOM,
- MODEKEYCOPY_HISTORYTOP,
- MODEKEYCOPY_JUMP,
- MODEKEYCOPY_JUMPAGAIN,
- MODEKEYCOPY_JUMPREVERSE,
- MODEKEYCOPY_JUMPBACK,
- MODEKEYCOPY_JUMPTO,
- MODEKEYCOPY_JUMPTOBACK,
- MODEKEYCOPY_LEFT,
- MODEKEYCOPY_MIDDLELINE,
- MODEKEYCOPY_NEXTPAGE,
- MODEKEYCOPY_NEXTPARAGRAPH,
- MODEKEYCOPY_NEXTSPACE,
- MODEKEYCOPY_NEXTSPACEEND,
- MODEKEYCOPY_NEXTWORD,
- MODEKEYCOPY_NEXTWORDEND,
- MODEKEYCOPY_OTHEREND,
- MODEKEYCOPY_PREVIOUSPAGE,
- MODEKEYCOPY_PREVIOUSPARAGRAPH,
- MODEKEYCOPY_PREVIOUSSPACE,
- MODEKEYCOPY_PREVIOUSWORD,
- MODEKEYCOPY_RECTANGLETOGGLE,
- MODEKEYCOPY_RIGHT,
- MODEKEYCOPY_SCROLLDOWN,
- MODEKEYCOPY_SCROLLUP,
- MODEKEYCOPY_SEARCHAGAIN,
- MODEKEYCOPY_SEARCHDOWN,
- MODEKEYCOPY_SEARCHREVERSE,
- MODEKEYCOPY_SEARCHUP,
- MODEKEYCOPY_SELECTLINE,
- MODEKEYCOPY_STARTNAMEDBUFFER,
- MODEKEYCOPY_STARTNUMBERPREFIX,
- MODEKEYCOPY_STARTOFLINE,
- MODEKEYCOPY_STARTSELECTION,
- MODEKEYCOPY_TOPLINE,
- MODEKEYCOPY_UP,
};
/* Data required while mode keys are in use. */
@@ -578,22 +537,14 @@ struct mode_key_data {
/* Binding between a key and a command. */
struct mode_key_binding {
key_code key;
- u_int repeat;
int mode;
enum mode_key_cmd cmd;
- const char *arg;
RB_ENTRY(mode_key_binding) entry;
};
RB_HEAD(mode_key_tree, mode_key_binding);
-/* Command to string mapping. */
-struct mode_key_cmdstr {
- enum mode_key_cmd cmd;
- const char *name;
-};
-
/* Named mode key table description. */
struct mode_key_entry;
struct mode_key_table {
@@ -834,6 +785,10 @@ struct window_mode {
void (*resize)(struct window_pane *, u_int, u_int);
void (*key)(struct window_pane *, struct client *, struct session *,
key_code, struct mouse_event *);
+
+ const char *(*key_table)(struct window_pane *);
+ void (*command)(struct window_pane *, struct client *,
+ struct session *, struct args *, struct mouse_event *);
};
#define WINDOW_MODE_TIMEOUT 180
@@ -925,6 +880,7 @@ struct window_pane {
void *modedata;
struct event modetimer;
time_t modelast;
+ u_int modeprefix;
TAILQ_ENTRY(window_pane) entry;
RB_ENTRY(window_pane) tree_entry;
@@ -1266,6 +1222,9 @@ struct client {
struct event repeat_timer;
+ struct event click_timer;
+ u_int click_button;
+
struct event status_timer;
struct screen status;
@@ -1289,6 +1248,8 @@ struct client {
#define CLIENT_256COLOURS 0x20000
#define CLIENT_IDENTIFIED 0x40000
#define CLIENT_STATUSFORCE 0x80000
+#define CLIENT_DOUBLECLICK 0x100000
+#define CLIENT_TRIPLECLICK 0x200000
int flags;
struct key_table *keytable;
@@ -1302,7 +1263,7 @@ struct client {
TAILQ_HEAD(, message_entry) message_log;
char *prompt_string;
- char *prompt_buffer;
+ struct utf8_data *prompt_buffer;
size_t prompt_index;
int (*prompt_callbackfn)(void *, const char *);
void (*prompt_freefn)(void *);
@@ -1556,8 +1517,6 @@ extern struct options *global_w_options;
extern struct environ *global_environ;
extern struct timeval start_time;
extern const char *socket_path;
-const char *getshell(void);
-int checkshell(const char *);
int areshell(const char *);
void setblocking(int, int);
const char *find_home(void);
@@ -1636,13 +1595,10 @@ int printflike(4, 5) hooks_wait(struct hooks *, struct cmd_q *,
struct cmd_find_state *, const char *, ...);
/* mode-key.c */
-extern const struct mode_key_table mode_key_tables[];
extern struct mode_key_tree mode_key_tree_vi_edit;
extern struct mode_key_tree mode_key_tree_vi_choice;
-extern struct mode_key_tree mode_key_tree_vi_copy;
extern struct mode_key_tree mode_key_tree_emacs_edit;
extern struct mode_key_tree mode_key_tree_emacs_choice;
-extern struct mode_key_tree mode_key_tree_emacs_copy;
int mode_key_cmp(struct mode_key_binding *, struct mode_key_binding *);
RB_PROTOTYPE(mode_key_tree, mode_key_binding, entry, mode_key_cmp);
const char *mode_key_tostring(const struct mode_key_cmdstr *,
@@ -1652,8 +1608,7 @@ enum mode_key_cmd mode_key_fromstring(const struct mode_key_cmdstr *,
const struct mode_key_table *mode_key_findtable(const char *);
void mode_key_init_trees(void);
void mode_key_init(struct mode_key_data *, struct mode_key_tree *);
-enum mode_key_cmd mode_key_lookup(struct mode_key_data *, key_code,
- const char **, u_int *);
+enum mode_key_cmd mode_key_lookup(struct mode_key_data *, key_code);
/* notify.c */
void notify_enable(void);
@@ -1718,14 +1673,11 @@ void environ_log(struct environ *, const char *);
/* tty.c */
void tty_create_log(void);
-void tty_init_termios(int, struct termios *, struct bufferevent *);
void tty_raw(struct tty *, const char *);
void tty_attributes(struct tty *, const struct grid_cell *,
const struct window_pane *);
void tty_reset(struct tty *);
-void tty_region_pane(struct tty *, const struct tty_ctx *, u_int, u_int);
void tty_region(struct tty *, u_int, u_int);
-void tty_cursor_pane(struct tty *, const struct tty_ctx *, u_int, u_int);
void tty_cursor(struct tty *, u_int, u_int);
void tty_putcode(struct tty *, enum tty_code_code);
void tty_putcode1(struct tty *, enum tty_code_code, int);
@@ -1743,7 +1695,6 @@ 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_force_cursor_colour(struct tty *, const char *);
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 *,
@@ -1800,12 +1751,10 @@ void tty_keys_free(struct tty *);
key_code tty_keys_next(struct tty *);
/* arguments.c */
-struct args *args_create(int, ...);
struct args *args_parse(const char *, int, char **);
void args_free(struct args *);
char *args_print(struct args *);
int args_has(struct args *, u_char);
-void args_set(struct args *, u_char, const char *);
const char *args_get(struct args *, u_char);
long long args_strtonum(struct args *, u_char, long long, long long,
char **);
@@ -1869,7 +1818,6 @@ void cmdq_run(struct cmd_q *, struct cmd_list *,
void cmdq_append(struct cmd_q *, struct cmd_list *,
struct mouse_event *);
int cmdq_continue(struct cmd_q *);
-void cmdq_flush(struct cmd_q *);
/* cmd-string.c */
int cmd_string_parse(const char *, struct cmd_list **, const char *,
@@ -1922,6 +1870,7 @@ void server_add_accept(int);
/* server-client.c */
void server_client_set_key_table(struct client *, const char *);
const char *server_client_get_key_table(struct client *);
+int server_client_is_default_key_table(struct client *);
int server_client_check_nested(struct client *);
void server_client_handle_key(struct client *, key_code);
void server_client_create(int);
@@ -1952,7 +1901,6 @@ int server_link_window(struct session *,
struct winlink *, struct session *, int, int, int, char **);
void server_unlink_window(struct session *, struct winlink *);
void server_destroy_pane(struct window_pane *, int);
-void server_destroy_session_group(struct session *);
void server_destroy_session(struct session *);
void server_check_unattached(void);
void server_set_identify(struct client *);
@@ -2018,7 +1966,6 @@ void grid_collect_history(struct grid *);
void grid_scroll_history(struct grid *);
void grid_scroll_history_region(struct grid *, u_int, u_int);
void grid_clear_history(struct grid *);
-void grid_expand_line(struct grid *, u_int, u_int);
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 *);
@@ -2114,7 +2061,6 @@ void screen_set_selection(struct screen *,
u_int, u_int, u_int, u_int, u_int, struct grid_cell *);
void screen_clear_selection(struct screen *);
int screen_check_selection(struct screen *, u_int, u_int);
-void screen_reflow(struct screen *, u_int);
/* window.c */
extern struct windows windows;
@@ -2128,7 +2074,6 @@ RB_PROTOTYPE(window_pane_tree, window_pane, tree_entry, window_pane_cmp);
struct winlink *winlink_find_by_index(struct winlinks *, int);
struct winlink *winlink_find_by_window(struct winlinks *, struct window *);
struct winlink *winlink_find_by_window_id(struct winlinks *, u_int);
-int winlink_next_index(struct winlinks *, int);
u_int winlink_count(struct winlinks *);
struct winlink *winlink_add(struct winlinks *, int);
void winlink_set_window(struct winlink *, struct window *);
@@ -2172,8 +2117,6 @@ u_int window_count_panes(struct window *);
void window_destroy_panes(struct window *);
struct window_pane *window_pane_find_by_id_str(const char *);
struct window_pane *window_pane_find_by_id(u_int);
-struct window_pane *window_pane_create(struct window *, u_int, u_int, u_int);
-void window_pane_destroy(struct window_pane *);
int window_pane_spawn(struct window_pane *, int, char **,
const char *, const char *, const char *, struct environ *,
struct termios *, char **);
@@ -2259,7 +2202,6 @@ void window_choose_ready(struct window_pane *,
u_int, void (*)(struct window_choose_data *));
struct window_choose_data *window_choose_data_create (int,
struct client *, struct session *);
-void window_choose_data_free(struct window_choose_data *);
void window_choose_data_run(struct window_choose_data *);
struct window_choose_data *window_choose_add_window(struct window_pane *,
struct client *, struct session *, struct winlink *,
@@ -2268,13 +2210,11 @@ struct window_choose_data *window_choose_add_session(struct window_pane *,
struct client *, struct session *, const char *,
const char *, u_int);
void window_choose_expand_all(struct window_pane *);
-void window_choose_collapse_all(struct window_pane *);
void window_choose_set_current(struct window_pane *, u_int);
/* names.c */
void check_window_name(struct window *);
char *default_window_name(struct window *);
-char *format_window_name(struct window *);
char *parse_window_name(const char *);
/* signal.c */
@@ -2331,11 +2271,8 @@ int session_set_current(struct session *, struct winlink *);
struct session_group *session_group_find(struct session *);
u_int session_group_index(struct session_group *);
void session_group_add(struct session *, struct session *);
-void session_group_remove(struct session *);
-u_int session_group_count(struct session_group *);
void session_group_synchronize_to(struct session *);
void session_group_synchronize_from(struct session *);
-void session_group_synchronize1(struct session *, struct session *);
void session_renumber_windows(struct session *);
/* utf8.c */
@@ -2347,6 +2284,8 @@ enum utf8_state utf8_combine(const struct utf8_data *, wchar_t *);
enum utf8_state utf8_split(wchar_t, struct utf8_data *);
int utf8_strvis(char *, const char *, size_t, int);
char *utf8_sanitize(const char *);
+size_t utf8_strlen(const struct utf8_data *);
+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 *);