diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-05-19 08:22:05 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-05-19 23:15:47 -0400 |
commit | d6d9596b38f544faa23d2c831aa84a5d15ffa972 (patch) | |
tree | 2d1e0cd40508036e1da615bd0bcdf1127e15b595 /src/nvim/eval.c | |
parent | 41828a7302d1ca17d5b84ff55aa9c91bd846ad64 (diff) | |
download | rneovim-d6d9596b38f544faa23d2c831aa84a5d15ffa972.tar.gz rneovim-d6d9596b38f544faa23d2c831aa84a5d15ffa972.tar.bz2 rneovim-d6d9596b38f544faa23d2c831aa84a5d15ffa972.zip |
vim-patch:8.0.1498: getjumplist() returns duplicate entries
Problem: Getjumplist() returns duplicate entries. (lacygoill)
Solution: Call cleanup_jumplist(). (Yegappan Lakshmanan)
https://github.com/vim/vim/commit/a7e18d237f817637815f0de44b08df1e0ca0f4f9
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index d48161d736..5c1c722a61 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10055,7 +10055,7 @@ static void f_getftype(typval_T *argvars, typval_T *rettv, FunPtr fptr) static void f_getjumplist(typval_T *argvars, typval_T *rettv, FunPtr fptr) { tv_list_alloc_ret(rettv, kListLenMayKnow); - const win_T *const wp = find_tabwin(&argvars[0], &argvars[1]); + win_T *const wp = find_tabwin(&argvars[0], &argvars[1]); if (wp == NULL) { return; } @@ -10064,14 +10064,21 @@ static void f_getjumplist(typval_T *argvars, typval_T *rettv, FunPtr fptr) tv_list_append_list(rettv->vval.v_list, l); tv_list_append_number(rettv->vval.v_list, wp->w_jumplistidx); + cleanup_jumplist(wp); for (int i = 0; i < wp->w_jumplistlen; i++) { + if (wp->w_jumplist[i].fmark.mark.lnum == 0) { + continue; + } + if (wp->w_jumplist[i].fmark.fnum == 0) { + fname2fnum(&wp->w_jumplist[i]); + } 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].fmark.fnum == 0) { + if (wp->w_jumplist[i].fname != NULL) { tv_dict_add_str(d, S_LEN("filename"), (char *)wp->w_jumplist[i].fname); } } |