aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-05-19 08:22:05 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-05-19 23:15:47 -0400
commitd6d9596b38f544faa23d2c831aa84a5d15ffa972 (patch)
tree2d1e0cd40508036e1da615bd0bcdf1127e15b595 /src/nvim/eval.c
parent41828a7302d1ca17d5b84ff55aa9c91bd846ad64 (diff)
downloadrneovim-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.c11
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);
}
}