diff options
Diffstat (limited to 'src/evalwindow.c')
-rw-r--r-- | src/evalwindow.c | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/src/evalwindow.c b/src/evalwindow.c index 8b47b98fd1..fde90f2561 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -24,29 +24,29 @@ win_getid(typval_T *argvars) if (argvars[0].v_type == VAR_UNKNOWN) return curwin->w_id; winnr = tv_get_number(&argvars[0]); - if (winnr > 0) + if (winnr <= 0) + return 0; + + if (argvars[1].v_type == VAR_UNKNOWN) + wp = firstwin; + else { - if (argvars[1].v_type == VAR_UNKNOWN) + tabpage_T *tp; + int tabnr = tv_get_number(&argvars[1]); + + FOR_ALL_TABPAGES(tp) + if (--tabnr == 0) + break; + if (tp == NULL) + return -1; + if (tp == curtab) wp = firstwin; else - { - tabpage_T *tp; - int tabnr = tv_get_number(&argvars[1]); - - FOR_ALL_TABPAGES(tp) - if (--tabnr == 0) - break; - if (tp == NULL) - return -1; - if (tp == curtab) - wp = firstwin; - else - wp = tp->tp_firstwin; - } - for ( ; wp != NULL; wp = wp->w_next) - if (--winnr == 0) - return wp->w_id; + wp = tp->tp_firstwin; } + for ( ; wp != NULL; wp = wp->w_next) + if (--winnr == 0) + return wp->w_id; return 0; } @@ -380,18 +380,20 @@ get_winnr(tabpage_T *tp, typval_T *argvar) } } - if (nr > 0) - for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin; - wp != twin; wp = wp->w_next) + if (nr <= 0) + return 0; + + for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin; + wp != twin; wp = wp->w_next) + { + if (wp == NULL) { - if (wp == NULL) - { - // didn't find it in this tabpage - nr = 0; - break; - } - ++nr; + // didn't find it in this tabpage + nr = 0; + break; } + ++nr; + } return nr; } |