diff options
| author | Björn Linse <bjorn.linse@gmail.com> | 2019-07-08 15:16:17 +0200 | 
|---|---|---|
| committer | Björn Linse <bjorn.linse@gmail.com> | 2019-09-04 23:57:02 +0200 | 
| commit | d5162afa2aee6609bf5d4f818639235b70c57a9a (patch) | |
| tree | 7d0992010b1b1548e3189f46c1aa8b4c5c67cbb6 /src/nvim/eval.c | |
| parent | d7aea13fee879a5e7854f2ebe9b7321cd8daf84f (diff) | |
| download | rneovim-d5162afa2aee6609bf5d4f818639235b70c57a9a.tar.gz rneovim-d5162afa2aee6609bf5d4f818639235b70c57a9a.tar.bz2 rneovim-d5162afa2aee6609bf5d4f818639235b70c57a9a.zip | |
anchor float to buffer position
vim-patch:8.1.1645: cannot use a popup window for a balloon
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   */ | 
