summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-10-25 12:32:11 +0200
committerBram Moolenaar <Bram@vim.org>2018-10-25 12:32:11 +0200
commite6e3989c1b3f18907a0c305712b867e9a3821369 (patch)
tree4809dda0c07ac5d06047b9c474d6507cf1fa68b0 /src/eval.c
parentbf9679ae4684cb0c4e6ef2c24da0f83955d53e57 (diff)
downloadvim-git-e6e3989c1b3f18907a0c305712b867e9a3821369.tar.gz
patch 8.1.0493: argv() and argc() only work on the current argument listv8.1.0493
Problem: argv() and argc() only work on the current argument list. Solution: Add a window ID argument. (Yegappan Lakshmanan, closes #832)
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index 7c462fb6a..e70bfd8ab 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8193,9 +8193,7 @@ find_win_by_nr(
tabpage_T *tp) /* NULL for current tab page */
{
win_T *wp;
- int nr;
-
- nr = (int)get_tv_number_chk(vp, NULL);
+ int nr = (int)get_tv_number_chk(vp, NULL);
if (nr < 0)
return NULL;
@@ -8218,6 +8216,20 @@ find_win_by_nr(
}
/*
+ * Find a window: When using a Window ID in any tab page, when using a number
+ * in the current tab page.
+ */
+ win_T *
+find_win_by_nr_or_id(typval_T *vp)
+{
+ int nr = (int)get_tv_number_chk(vp, NULL);
+
+ if (nr >= LOWEST_WIN_ID)
+ return win_id2wp(vp);
+ return find_win_by_nr(vp, NULL);
+}
+
+/*
* Find window specified by "wvp" in tabpage "tvp".
*/
win_T *