diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-05-20 10:42:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-20 10:42:31 +0200 |
commit | 60710dee82070834b2bd156738cd1a5379dfc640 (patch) | |
tree | 72cf74ab0373fc59b9d09605248bc1d66ceec36c /src/nvim/eval.c | |
parent | 8c842b39ba7e88fbe6e2fd562731030d5499e343 (diff) | |
parent | 7ea350456d6b2f9c92f3dcf6feb7daa3e0abc079 (diff) | |
download | rneovim-60710dee82070834b2bd156738cd1a5379dfc640.tar.gz rneovim-60710dee82070834b2bd156738cd1a5379dfc640.tar.bz2 rneovim-60710dee82070834b2bd156738cd1a5379dfc640.zip |
Merge #10033 from janlazo/vim-8.0.1082
vim-patch:8.0.{1082,1497,1498,1513},8.1.{901,1357,1358}
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 132450f7a1..6479163028 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10051,6 +10051,37 @@ static void f_getftype(typval_T *argvars, typval_T *rettv, FunPtr fptr) rettv->vval.v_string = type; } +// "getjumplist()" function +static void f_getjumplist(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + tv_list_alloc_ret(rettv, kListLenMayKnow); + win_T *const wp = find_tabwin(&argvars[0], &argvars[1]); + if (wp == NULL) { + return; + } + + cleanup_jumplist(wp, true); + + list_T *const l = tv_list_alloc(wp->w_jumplistlen); + tv_list_append_list(rettv->vval.v_list, l); + tv_list_append_number(rettv->vval.v_list, wp->w_jumplistidx); + + for (int i = 0; i < wp->w_jumplistlen; i++) { + if (wp->w_jumplist[i].fmark.mark.lnum == 0) { + continue; + } + dict_T *const d = tv_dict_alloc(); + tv_list_append_dict(l, d); + tv_dict_add_nr(d, S_LEN("lnum"), wp->w_jumplist[i].fmark.mark.lnum); + tv_dict_add_nr(d, S_LEN("col"), wp->w_jumplist[i].fmark.mark.col); + tv_dict_add_nr(d, S_LEN("coladd"), wp->w_jumplist[i].fmark.mark.coladd); + tv_dict_add_nr(d, S_LEN("bufnr"), wp->w_jumplist[i].fmark.fnum); + if (wp->w_jumplist[i].fname != NULL) { + tv_dict_add_str(d, S_LEN("filename"), (char *)wp->w_jumplist[i].fname); + } + } +} + /* * "getline(lnum, [end])" function */ |