From a0d723db55cf2b81e3bd9271cda9b1b58a5c9f3c Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Mon, 29 Apr 2019 05:53:44 -0400 Subject: vim-patch:8.0.1563: getwinposx() timeout #9955 Problem: Timeout of getwinposx() can be too short. (lilydjwg) Solution: Add getwinpos(). (closes vim/vim#2689) https://github.com/vim/vim/commit/3f54fd319f6641b4bed478bcc90cdb39ede68e31 --- runtime/doc/eval.txt | 11 +++++++++-- src/nvim/eval.c | 8 ++++++++ src/nvim/eval.lua | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 454013ac73..b425e1b591 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2114,8 +2114,8 @@ gettabwinvar({tabnr}, {winnr}, {name} [, {def}]) any {name} in {winnr} in tab page {tabnr} getwininfo([{winid}]) List list of windows getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window -getwinposx() Number X coord in pixels of GUI Vim window -getwinposy() Number Y coord in pixels of GUI Vim window +getwinposx() Number X coord in pixels of Vim window +getwinposy() Number Y coord in pixels of Vim window getwinvar({nr}, {varname} [, {def}]) any variable {varname} in window {nr} glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) @@ -4550,6 +4550,13 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* To obtain all window-local variables use: > gettabwinvar({tabnr}, {winnr}, '&') +getwinpos([{timeout}]) *getwinpos()* + The result is a list with two numbers, the result of + getwinposx() and getwinposy() combined: + [x-pos, y-pos] + {timeout} can be used to specify how long to wait in msec for + a response from the terminal. When omitted 100 msec is used. + *getwinposx()* getwinposx() The result is a Number, which is the X coordinate in pixels of the left hand side of the GUI Vim window. The result will be diff --git a/src/nvim/eval.c b/src/nvim/eval.c index c7d4e32739..19324acd5c 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10474,6 +10474,14 @@ static void f_win_screenpos(typval_T *argvars, typval_T *rettv, FunPtr fptr) tv_list_append_number(rettv->vval.v_list, wp == NULL ? 0 : wp->w_wincol + 1); } +// "getwinpos({timeout})" function +static void f_getwinpos(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + tv_list_alloc_ret(rettv, 2); + tv_list_append_number(rettv->vval.v_list, -1); + tv_list_append_number(rettv->vval.v_list, -1); +} + /* * "getwinposx()" function */ diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index b7525ee49b..7978044200 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -143,6 +143,7 @@ return { gettabvar={args={2, 3}}, gettabwinvar={args={3, 4}}, getwininfo={args={0, 1}}, + getwinpos={args={0, 1}}, getwinposx={}, getwinposy={}, getwinvar={args={2, 3}}, -- cgit