aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2024-12-10 14:03:44 +0100
committerbfredl <bjorn.linse@gmail.com>2024-12-16 12:46:59 +0100
commit2d6f57b2891247f9ca0f6fb75c4b93fb2c714dc4 (patch)
treed7bb06b9366e0640d4299a3c7adce644f8e4086e /src/nvim/eval/funcs.c
parent9c6a3703bb15d56fecdd962512f69f0ccf6d398c (diff)
downloadrneovim-2d6f57b2891247f9ca0f6fb75c4b93fb2c714dc4.tar.gz
rneovim-2d6f57b2891247f9ca0f6fb75c4b93fb2c714dc4.tar.bz2
rneovim-2d6f57b2891247f9ca0f6fb75c4b93fb2c714dc4.zip
refactor(wininfo): change wininfo from a linked list to an array
"wininfo" is going to be my next victim. The main problem with wininfo is that it is "all or nothing", i e either all state about a buffer in a window is considered valid or none of it is. This needs to be fixed to address some long running grievances. For now this is just a warmup: refactor it from a linked list to a vector.
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index f700e732a9..768d7664f7 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -2402,14 +2402,15 @@ static void f_getchangelist(typval_T *argvars, typval_T *rettv, EvalFuncData fpt
if (buf == curwin->w_buffer) {
changelistindex = curwin->w_changelistidx;
} else {
- wininfo_T *wip;
+ changelistindex = buf->b_changelistlen;
- FOR_ALL_BUF_WININFO(buf, wip) {
+ for (size_t i = 0; i < kv_size(buf->b_wininfo); i++) {
+ WinInfo *wip = kv_A(buf->b_wininfo, i);
if (wip->wi_win == curwin) {
+ changelistindex = wip->wi_changelistidx;
break;
}
}
- changelistindex = wip != NULL ? wip->wi_changelistidx : buf->b_changelistlen;
}
tv_list_append_number(rettv->vval.v_list, (varnumber_T)changelistindex);