aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h190
1 files changed, 90 insertions, 100 deletions
diff --git a/tmux.h b/tmux.h
index 97b5df8c..0169b161 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1,4 +1,4 @@
-/* $Id: tmux.h,v 1.37 2007-10-03 12:43:47 nicm Exp $ */
+/* $Id: tmux.h,v 1.38 2007-10-03 21:31:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -259,28 +259,17 @@ struct buffer {
/* Message codes. */
enum hdrtype {
- MSG_ATTACH,
- MSG_DATA,
- MSG_DETACH,
+ MSG_COMMAND,
MSG_ERROR,
+ MSG_PRINT,
MSG_EXIT,
+ MSG_IDENTIFY,
+ MSG_READY,
+ MSG_DETACH,
+ MSG_RESIZE,
+ MSG_DATA,
MSG_KEYS,
- MSG_NEW,
- MSG_OKAY,
MSG_PAUSE,
- MSG_RENAME,
- MSG_SESSIONS,
- MSG_SIZE,
- MSG_WINDOWLIST,
- MSG_WINDOWS,
- MSG_BINDKEY,
- MSG_UNBINDKEY,
-};
-
-/* Message header structure. */
-struct hdr {
- enum hdrtype type;
- size_t size;
};
/* Session identification. */
@@ -290,59 +279,24 @@ struct sessid {
char name[MAXNAMELEN]; /* empty for current */
};
-struct new_data {
- char name[MAXNAMELEN];
- u_int sx;
- u_int sy;
-};
-
-struct attach_data {
- struct sessid sid;
- u_int sx;
- u_int sy;
-};
-
-struct sessions_data {
- u_int sessions;
-};
-
-struct sessions_entry {
- char name[MAXNAMELEN];
- time_t tim;
- u_int windows;
-};
-
-struct windows_data {
- struct sessid sid;
- u_int windows;
+/* Message header structure. */
+struct hdr {
+ enum hdrtype type;
+ size_t size;
};
-struct windows_entry {
- u_int idx;
- char tty[TTY_NAME_MAX];
-
- char name[MAXNAMELEN];
- char title[MAXTITLELEN];
+struct msg_command_data {
+ struct sessid sid;
};
-struct size_data {
+struct msg_identify_data {
u_int sx;
u_int sy;
};
-struct rename_data {
- int idx;
- struct sessid sid;
- char newname[MAXNAMELEN];
-};
-
-struct bind_data {
- int key;
- char cmd[MAXNAMELEN];
-
- int flags;
-
- u_int num;
+struct msg_resize_data {
+ u_int sx;
+ u_int sy;
};
/* Attributes. */
@@ -460,7 +414,7 @@ ARRAY_DECL(windows, struct window *);
/* Client session. */
struct session {
- char name[MAXNAMELEN];
+ char *name;
time_t tim;
struct window *window;
@@ -478,7 +432,10 @@ struct client {
u_int sx;
u_int sy;
- int prefix; /* waiting for command */
+#define CLIENT_TERMINAL 0x1
+#define CLIENT_PREFIX 0x2
+#define CLIENT_HOLD 0x4
+ int flags;
struct session *session;
};
@@ -493,50 +450,85 @@ struct client_ctx {
int loc_fd;
struct buffer *loc_in;
struct buffer *loc_out;
+};
- struct winsize ws;
+/* Key/command line command. */
+enum cmd_type {
+ CMD_NEWSESSION,
+ CMD_DETACHSESSION,
+ CMD_LISTSESSIONS,
};
-/* Key command. */
-struct cmd {
- int key;
- void (*fn)(struct client *, struct cmd *);
- u_int num;
- char *str;
+struct cmd_ctx {
+ struct client *client;
+ struct session *session;
+
+ void (*print)(struct cmd_ctx *, const char *, ...);
+ void (*error)(struct cmd_ctx *, const char *, ...);
+
+#define CMD_KEY 0x1
+ int flags;
};
-/* Key binding. */
-struct bind {
+struct cmd_entry {
+ enum cmd_type type;
const char *name;
- void (*fn)(struct client *, struct cmd *);
-
-#define BIND_USER 0x1
-#define BIND_NUMBER 0x2
-#define BIND_STRING 0x4
+ const char *alias;
+
+#define CMD_STARTSERVER 0x1
+#define CMD_NOSESSION 0x2
int flags;
+
+ int (*parse)(void **, int, char **, char **);
+ const char *(*usage)(void);
+ void (*exec)(void *, struct cmd_ctx *);
+ void (*send)(void *, struct buffer *);
+ void (*recv)(void **, struct buffer *);
+ void (*free)(void *);
+};
+
+struct cmd {
+ const struct cmd_entry *entry;
+ void *data;
+};
+
+/* Key binding. */
+struct binding {
+ int key;
+ struct cmd *cmd;
};
/* tmux.c */
extern volatile sig_atomic_t sigwinch;
extern volatile sig_atomic_t sigterm;
+extern int prefix_key;
extern int debug_level;
extern u_int status_lines;
extern char *default_command;
-int usage(const char *, ...);
+void usage(char **, const char *, ...);
void logfile(const char *);
void siginit(void);
void sigreset(void);
-/* op.c */
-int op_new_session(char *, int, char **);
-int op_attach(char *, int, char **);
-int op_rename_window(char *, int, char **);
-int op_bind_key(char *, int, char **);
-int op_unbind_key(char *, int, char **);
-
-/* op-list.c */
-int op_list_sessions(char *, int, char **);
-int op_list_windows(char *, int, char **);
+/* cmd.c */
+struct cmd *cmd_parse(int, char **, char **);
+void cmd_exec(struct cmd *, struct cmd_ctx *);
+void cmd_send(struct cmd *, struct buffer *);
+struct cmd *cmd_recv(struct buffer *);
+void cmd_free(struct cmd *);
+void cmd_send_string(struct buffer *, const char *);
+char *cmd_recv_string(struct buffer *);
+extern const struct cmd_entry cmd_new_session_entry;
+extern const struct cmd_entry cmd_detach_session_entry;
+extern const struct cmd_entry cmd_list_sessions_entry;
+
+/* bind.c */
+const struct bind *cmdx_lookup_bind(const char *);
+void cmdx_add_bind(int, u_int, char *, const struct bind *);
+void cmdx_remove_bind(int);
+void cmdx_init(void);
+void cmdx_free(void);
+void cmdx_dispatch(struct client *, int);
/* client.c */
int client_init(char *, struct client_ctx *, int);
@@ -552,14 +544,12 @@ void client_write_server2(
struct client_ctx *, enum hdrtype, void *, size_t, void *, size_t);
void client_fill_sessid(struct sessid *, char [MAXNAMELEN]);
-/* cmd.c */
-extern int cmd_prefix;
-const struct bind *cmd_lookup_bind(const char *);
-void cmd_add_bind(int, u_int, char *, const struct bind *);
-void cmd_remove_bind(int);
-void cmd_init(void);
-void cmd_free(void);
-void cmd_dispatch(struct client *, int);
+/* key-bindings.c */
+void key_bindings_add(int, struct cmd *);
+void key_bindings_remove(int);
+void key_bindings_init(void);
+void key_bindings_free(void);
+void key_bindings_dispatch(int, struct client *);
/* key-string.c */
int key_string_lookup(const char *);
@@ -582,7 +572,7 @@ void server_write_client2(struct client *,
void server_write_clients(
struct window *, enum hdrtype, const void *, size_t);
void server_window_changed(struct client *);
-void server_draw_client(struct client *, u_int, u_int);
+void server_draw_client(struct client *);
void server_draw_status(struct client *);
/* status.c */