diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-12-14 10:43:41 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-12-14 10:43:41 +0000 |
commit | 30962cb2008a5f699bdf3e1da01a2554c53b8062 (patch) | |
tree | 9c41eb0a70338e181ed598140a6c8039a4943d3b | |
parent | 3f58cbaae91ac941c34bad3cb2447d6bcc541a2d (diff) | |
download | rtmux-30962cb2008a5f699bdf3e1da01a2554c53b8062.tar.gz rtmux-30962cb2008a5f699bdf3e1da01a2554c53b8062.tar.bz2 rtmux-30962cb2008a5f699bdf3e1da01a2554c53b8062.zip |
New server option, escape-time, to set the timeout used to detect if escapes
are alone or part of a function key or meta sequence.
-rw-r--r-- | cmd-set-option.c | 1 | ||||
-rw-r--r-- | tmux.1 | 10 | ||||
-rw-r--r-- | tmux.c | 1 | ||||
-rw-r--r-- | tmux.h | 5 | ||||
-rw-r--r-- | tty-keys.c | 7 |
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 } }; @@ -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 @@ -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; @@ -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 @@ -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); |