aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/options.txt54
-rw-r--r--src/nvim/tui/term_input.inl14
2 files changed, 19 insertions, 49 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 790903a847..5d6fedcac4 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -6988,59 +6988,35 @@ A jump table for the options with a short description can be found at |Q_op|.
*'timeout'* *'to'* *'notimeout'* *'noto'*
'timeout' 'to' boolean (default on)
global
+ This option and 'timeoutlen' determine the behavior when part of a
+ mapped key sequence has been received. For example, if <c-f> is
+ pressed and 'timeout' is set, Nvim will wait 'timeoutlen' milliseconds
+ for any key that can follow <c-f> in a mapping.
+
*'ttimeout'* *'nottimeout'*
'ttimeout' boolean (default off)
global
{not in Vi}
- These two options together determine the behavior when part of a
- mapped key sequence or keyboard code has been received:
-
- 'timeout' 'ttimeout' action ~
- off off do not time out
- on on or off time out on :mappings and key codes
- off on time out on key codes
-
- If both options are off, Vim will wait until either the complete
- mapping or key sequence has been received, or it is clear that there
- is no mapping or key sequence for the received characters. For
- example: if you have mapped "vl" and Vim has received 'v', the next
- character is needed to see if the 'v' is followed by an 'l'.
- When one of the options is on, Vim will wait for about 1 second for
- the next character to arrive. After that the already received
- characters are interpreted as single characters. The waiting time can
- be changed with the 'timeoutlen' option.
- On slow terminals or very busy systems timing out may cause
- malfunctioning cursor keys. If both options are off, Vim waits
- forever after an entered <Esc> if there are key codes that start
- with <Esc>. You will have to type <Esc> twice. If you do not have
- problems with key codes, but would like to have :mapped key
- sequences not timing out in 1 second, set the 'ttimeout' option and
- reset the 'timeout' option.
+ This option and 'ttimeoutlen' determine the behavior when part of a
+ key code sequence has been received by the terminal UI. For example,
+ if the \x1b byte is received and 'ttimeout' is set, Nvim will wait
+ 'ttimeoutlen' milliseconds for the terminal to complete a byte
+ sequence that represents a key that starts with \x1b.
*'timeoutlen'* *'tm'*
'timeoutlen' 'tm' number (default 1000)
global
+ The time in milliseconds that is waited for a mapped sequence to
+ complete.
{not in all versions of Vi}
+
*'ttimeoutlen'* *'ttm'*
'ttimeoutlen' 'ttm' number (default -1)
global
{not in Vi}
- The time in milliseconds that is waited for a key code or mapped key
- sequence to complete. Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G
+ The time in milliseconds that is waited for a key code
+ sequence to complete. Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G
when part of a command has been typed.
- Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1. When a
- different timeout value for key codes is desired set 'ttimeoutlen' to
- a non-negative number.
-
- ttimeoutlen mapping delay key code delay ~
- < 0 'timeoutlen' 'timeoutlen'
- >= 0 'timeoutlen' 'ttimeoutlen'
-
- The timeout only happens when the 'timeout' and 'ttimeout' options
- tell so. A useful setting would be >
- :set timeout timeoutlen=3000 ttimeoutlen=100
-< (time out on mapping after three seconds, time out on key codes after
- a tenth of a second).
*'title'* *'notitle'*
'title' boolean (default off, on when title can be restored)
diff --git a/src/nvim/tui/term_input.inl b/src/nvim/tui/term_input.inl
index 6b8e3197ba..9a40a64ed9 100644
--- a/src/nvim/tui/term_input.inl
+++ b/src/nvim/tui/term_input.inl
@@ -112,17 +112,11 @@ static void timer_cb(uv_timer_t *handle);
static int get_key_code_timeout(void)
{
- Integer ms = 0;
- bool timeout = false;
- // Check 'timeout' and 'ttimeout' to determine if we should send ESC
- // after 'ttimeoutlen'. See :help 'ttimeout' for more information
+ Integer ms = -1;
+ // Check 'ttimeout' to determine if we should send ESC after 'ttimeoutlen'.
+ // See :help 'ttimeout' for more information
Error err = ERROR_INIT;
- timeout = vim_get_option(cstr_as_string("timeout"), &err).data.boolean;
- if (!timeout) {
- timeout = vim_get_option(cstr_as_string("ttimeout"), &err).data.boolean;
- }
-
- if (timeout) {
+ if (vim_get_option(cstr_as_string("ttimeout"), &err).data.boolean) {
ms = vim_get_option(cstr_as_string("ttimeoutlen"), &err).data.integer;
}