summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/tmux/server.c')
-rw-r--r--usr.bin/tmux/server.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/usr.bin/tmux/server.c b/usr.bin/tmux/server.c
index 6b11cc749c8..e8ea7435cc0 100644
--- a/usr.bin/tmux/server.c
+++ b/usr.bin/tmux/server.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server.c,v 1.31 2009/09/07 21:01:50 nicm Exp $ */
+/* $OpenBSD: server.c,v 1.32 2009/09/07 21:12:12 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -795,6 +795,7 @@ server_accept_client(int srv_fd)
void
server_handle_client(struct client *c)
{
+ struct window *w;
struct window_pane *wp;
struct screen *s;
struct timeval tv;
@@ -818,8 +819,18 @@ server_handle_client(struct client *c)
if (c->session == NULL)
return;
- wp = c->session->curw->window->active; /* could die */
-
+ w = c->session->curw->window;
+ wp = w->active; /* could die */
+
+ /* Special case: number keys jump to pane in identify mode. */
+ if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
+ wp = window_pane_at_index(w, key - '0');
+ if (wp != NULL && window_pane_visible(wp))
+ window_set_active_pane(w, wp);
+ server_clear_identify(c);
+ continue;
+ }
+
status_message_clear(c);
server_clear_identify(c);
if (c->prompt_string != NULL) {