diff options
author | Marco Hinz <mh.codebro@gmail.com> | 2019-04-08 20:10:30 +0200 |
---|---|---|
committer | Marco Hinz <mh.codebro@gmail.com> | 2019-04-08 21:00:31 +0200 |
commit | e6101b4963020b0ce9362c70dc0608f2a3adb864 (patch) | |
tree | ffe46d4453e0f363261301c635cf921e7526c599 | |
parent | 5a81561e7afa9c26d2190677750e341694e17c91 (diff) | |
download | rneovim-e6101b4963020b0ce9362c70dc0608f2a3adb864.tar.gz rneovim-e6101b4963020b0ce9362c70dc0608f2a3adb864.tar.bz2 rneovim-e6101b4963020b0ce9362c70dc0608f2a3adb864.zip |
vim-patch:8.1.1118: a couple of conditions are hard to understand
Problem: A couple of conditions are hard to understand.
Solution: Split the conditions into pieces. (Ozaki Kiichi)
https://github.com/vim/vim/commit/652de23dc7abf6aa2721ccee7fe279b5cce8069c
-rw-r--r-- | src/nvim/getchar.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index c29ef9f822..0020b57482 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2270,18 +2270,25 @@ static int vgetorpeek(int advance) // that has a <Nop> RHS. timedout = false; } + + long wait_time = 0; + + if (advance) { + if (typebuf.tb_len == 0 + || !(p_timeout || (p_ttimeout && keylen == KEYLEN_PART_KEY))) { + // blocking wait + wait_time = -1L; + } else if (keylen == KEYLEN_PART_KEY && p_ttm >= 0) { + wait_time = p_ttm; + } else { + wait_time = p_tm; + } + } + wait_tb_len = typebuf.tb_len; c = inchar(typebuf.tb_buf + typebuf.tb_off + typebuf.tb_len, - typebuf.tb_buflen - typebuf.tb_off - typebuf.tb_len - 1, - !advance - ? 0 - : ((typebuf.tb_len == 0 - || !(p_timeout || (p_ttimeout - && keylen == KEYLEN_PART_KEY))) - ? -1L - : ((keylen == KEYLEN_PART_KEY && p_ttm >= 0) - ? p_ttm - : p_tm))); + typebuf.tb_buflen - typebuf.tb_off - typebuf.tb_len - 1, + wait_time); if (i != 0) pop_showcmd(); |