diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-09-05 12:50:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-05 12:50:38 +0200 |
commit | 79ea47d47836154cfb5a9574faa5c2af8422486a (patch) | |
tree | e3498beaa706b1424e71d142d1d01b809056f59b /src/nvim/eval.c | |
parent | 632ee8d2ed6e307cc4d9ca2cf9e3ba0531a8af51 (diff) | |
parent | d5162afa2aee6609bf5d4f818639235b70c57a9a (diff) | |
download | rneovim-79ea47d47836154cfb5a9574faa5c2af8422486a.tar.gz rneovim-79ea47d47836154cfb5a9574faa5c2af8422486a.tar.bz2 rneovim-79ea47d47836154cfb5a9574faa5c2af8422486a.zip |
Merge pull request #10451 from bfredl/floatbuf
anchor float to buffer position
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index fa9777b651..70f38b793d 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -14781,6 +14781,32 @@ static void f_screencol(typval_T *argvars, typval_T *rettv, FunPtr fptr) rettv->vval.v_number = ui_current_col() + 1; } +/// "screenpos({winid}, {lnum}, {col})" function +static void f_screenpos(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + pos_T pos; + int row = 0; + int scol = 0, ccol = 0, ecol = 0; + + tv_dict_alloc_ret(rettv); + dict_T *dict = rettv->vval.v_dict; + + win_T *wp = find_win_by_nr_or_id(&argvars[0]); + if (wp == NULL) { + return; + } + + pos.lnum = tv_get_number(&argvars[1]); + pos.col = tv_get_number(&argvars[2]) - 1; + pos.coladd = 0; + textpos2screenpos(wp, &pos, &row, &scol, &ccol, &ecol, false); + + tv_dict_add_nr(dict, S_LEN("row"), row); + tv_dict_add_nr(dict, S_LEN("col"), scol); + tv_dict_add_nr(dict, S_LEN("curscol"), ccol); + tv_dict_add_nr(dict, S_LEN("endcol"), ecol); +} + /* * "screenrow()" function */ |