aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2019-04-08 20:10:30 +0200
committerMarco Hinz <mh.codebro@gmail.com>2019-04-08 21:00:31 +0200
commite6101b4963020b0ce9362c70dc0608f2a3adb864 (patch)
treeffe46d4453e0f363261301c635cf921e7526c599
parent5a81561e7afa9c26d2190677750e341694e17c91 (diff)
downloadrneovim-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.c27
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();