aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-08-15 20:33:00 -0400
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-08-15 20:37:53 -0400
commit2036d0428472b2453cc459a9ab27d39ac0063d2a (patch)
treea55d86ccccffb29fb57f970ea506083b89273c86
parentb89c08901c1e619b9aeca6f109f6ba73a7be4e9f (diff)
downloadrneovim-2036d0428472b2453cc459a9ab27d39ac0063d2a.tar.gz
rneovim-2036d0428472b2453cc459a9ab27d39ac0063d2a.tar.bz2
rneovim-2036d0428472b2453cc459a9ab27d39ac0063d2a.zip
vim-patch:8.1.0184: not easy to figure out the window layout
Problem: Not easy to figure out the window layout. Solution: Add "wincol" and "winrow" to what getwininfo() returns. https://github.com/vim/vim/commit/b6959a8e06cef6d2126b030b2f8acd49457a3582
-rw-r--r--runtime/doc/eval.txt2
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/testdir/test_bufwintabinfo.vim21
3 files changed, 23 insertions, 2 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 45faf8cdfe..493345edee 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4472,8 +4472,10 @@ getwininfo([{winid}]) *getwininfo()*
variables a reference to the dictionary with
window-local variables
width window width
+ wincol leftmost screen column of the window
winid |window-ID|
winnr window number
+ winrow topmost screen column of the window
To obtain all window-local variables use: >
gettabwinvar({tabnr}, {winnr}, '&')
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 17057ea28d..4bb7a45232 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10262,8 +10262,10 @@ static dict_T *get_win_info(win_T *wp, int16_t tpnr, int16_t winnr)
tv_dict_add_nr(dict, S_LEN("winnr"), winnr);
tv_dict_add_nr(dict, S_LEN("winid"), wp->handle);
tv_dict_add_nr(dict, S_LEN("height"), wp->w_height);
+ tv_dict_add_nr(dict, S_LEN("winrow"), wp->w_winrow);
tv_dict_add_nr(dict, S_LEN("width"), wp->w_width);
tv_dict_add_nr(dict, S_LEN("bufnr"), wp->w_buffer->b_fnum);
+ tv_dict_add_nr(dict, S_LEN("wincol"), wp->w_wincol);
tv_dict_add_nr(dict, S_LEN("quickfix"), bt_quickfix(wp->w_buffer));
tv_dict_add_nr(dict, S_LEN("loclist"),
diff --git a/src/nvim/testdir/test_bufwintabinfo.vim b/src/nvim/testdir/test_bufwintabinfo.vim
index a592cd7b11..478f7ac9bc 100644
--- a/src/nvim/testdir/test_bufwintabinfo.vim
+++ b/src/nvim/testdir/test_bufwintabinfo.vim
@@ -39,17 +39,34 @@ function Test_getbufwintabinfo()
let w2_id = win_getid()
tabnew | let w3_id = win_getid()
new | let w4_id = win_getid()
- new | let w5_id = win_getid()
+ vert new | let w5_id = win_getid()
call setwinvar(0, 'signal', 'green')
tabfirst
let winlist = getwininfo()
call assert_equal(5, len(winlist))
+ call assert_equal(winwidth(1), winlist[0].width)
+ call assert_equal(0, winlist[0].wincol)
+ call assert_equal(1, winlist[0].winrow) " tabline adds one
+
call assert_equal(winbufnr(2), winlist[1].bufnr)
call assert_equal(winheight(2), winlist[1].height)
+ call assert_equal(0, winlist[1].wincol)
+ call assert_equal(winheight(1) + 2, winlist[1].winrow)
+
call assert_equal(1, winlist[2].winnr)
+ call assert_equal(1, winlist[2].winrow)
+ call assert_equal(0, winlist[2].wincol)
+
+ call assert_equal(winlist[2].width + 1, winlist[3].wincol)
+ call assert_equal(0, winlist[4].wincol)
+
+ call assert_equal(1, winlist[0].tabnr)
+ call assert_equal(1, winlist[1].tabnr)
+ call assert_equal(2, winlist[2].tabnr)
call assert_equal(2, winlist[3].tabnr)
+ call assert_equal(2, winlist[4].tabnr)
+
call assert_equal('green', winlist[2].variables.signal)
- call assert_equal(winwidth(1), winlist[0].width)
call assert_equal(w4_id, winlist[3].winid)
let winfo = getwininfo(w5_id)[0]
call assert_equal(2, winfo.tabnr)