aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd-set-option.c1
-rw-r--r--tmux.110
-rw-r--r--tmux.c1
-rw-r--r--tmux.h5
-rw-r--r--tty-keys.c7
5 files changed, 15 insertions, 9 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c
index 1a4df533..b445e537 100644
--- a/cmd-set-option.c
+++ b/cmd-set-option.c
@@ -74,6 +74,7 @@ const char *set_option_bell_action_list[] = {
};
const struct set_option_entry set_option_table[] = {
+ { "escape-time", SET_OPTION_NUMBER, 0, INT_MAX, NULL },
{ "quiet", SET_OPTION_FLAG, 0, 0, NULL },
{ NULL, 0, 0, 0, NULL }
};
diff --git a/tmux.1 b/tmux.1
index fbbfe79e..79e65af6 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1288,8 +1288,14 @@ Available window options are listed under
.Pp
Available server options are:
.Bl -tag -width Ds
+.It Ic escape-time
+Set the time in milliseconds for which
+.Nm
+waits after an escape is input to determine if it is part of a function or meta
+key sequences.
+The default is 500 milliseconds.
.It Ic quiet
-Enable of disable the display of various informational messages (see also the
+Enable or disable the display of various informational messages (see also the
.Fl q
command line flag).
.El
@@ -1884,7 +1890,7 @@ The default is off.
Show the window options with
.Fl w
(equivalent to
-.Ic show-window-options ),
+.Ic show-window-options ) ,
the server options with
.Fl s ,
otherwise the session options for
diff --git a/tmux.c b/tmux.c
index 540c6f9f..0e080306 100644
--- a/tmux.c
+++ b/tmux.c
@@ -317,6 +317,7 @@ main(int argc, char **argv)
options_init(&global_options, NULL);
oo = &global_options;
options_set_number(oo, "quiet", quiet);
+ options_set_number(oo, "escape-time", 500);
options_init(&global_s_options, NULL);
so = &global_s_options;
diff --git a/tmux.h b/tmux.h
index e9d11f65..c68e560a 100644
--- a/tmux.h
+++ b/tmux.h
@@ -50,7 +50,7 @@ extern char **environ;
/* Default prompt history length. */
#define PROMPT_HISTORY 100
-/*
+/*
* Minimum layout cell size, NOT including separator line. The scroll region
* cannot be one line in height so this must be at least two.
*/
@@ -59,9 +59,6 @@ extern char **environ;
/* Automatic name refresh interval, in milliseconds. */
#define NAME_INTERVAL 500
-/* Escape timer period, in milliseconds. */
-#define ESCAPE_PERIOD 500
-
/* Maximum data to buffer for output before suspending reading from panes. */
#define BACKOFF_THRESHOLD 1024
diff --git a/tty-keys.c b/tty-keys.c
index a88f9542..0ac1b43d 100644
--- a/tty-keys.c
+++ b/tty-keys.c
@@ -429,7 +429,7 @@ tty_keys_next(struct tty *tty)
const char *buf;
size_t len, size;
cc_t bspace;
- int key;
+ int key, delay;
buf = EVBUFFER_DATA(tty->event->input);
len = EVBUFFER_LENGTH(tty->event->input);
@@ -521,8 +521,9 @@ partial_key:
start_timer:
/* Start the timer and wait for expiry or more data. */
- tv.tv_sec = 0;
- tv.tv_usec = ESCAPE_PERIOD * 1000L;
+ delay = options_get_number(&global_options, "escape-time");
+ tv.tv_sec = delay / 1000;
+ tv.tv_usec = (delay % 1000) * 1000L;
evtimer_del(&tty->key_timer);
evtimer_set(&tty->key_timer, tty_keys_callback, tty);