patch 7.4.2204
Problem: It is not easy to get information about buffers, windows and
tabpages.
Solution: Add getbufinfo(), getwininfo() and gettabinfo(). (Yegappan
Lakshmanan)
diff --git a/src/option.c b/src/option.c
index ba07482..d1a2533 100644
--- a/src/option.c
+++ b/src/option.c
@@ -12329,3 +12329,40 @@
);
}
#endif
+
+#if defined(FEAT_EVAL) || defined(PROTO)
+/*
+ * Get window or buffer local options.
+ */
+ dict_T *
+get_winbuf_options(int bufopt)
+{
+ dict_T *d;
+ int opt_idx;
+
+ d = dict_alloc();
+ if (d == NULL)
+ return NULL;
+
+ for (opt_idx = 0; !istermoption(&options[opt_idx]); opt_idx++)
+ {
+ struct vimoption *opt = &options[opt_idx];
+
+ if ((bufopt && (opt->indir & PV_BUF))
+ || (!bufopt && (opt->indir & PV_WIN)))
+ {
+ char_u *varp = get_varp(opt);
+
+ if (varp != NULL)
+ {
+ if (opt->flags & P_STRING)
+ dict_add_nr_str(d, opt->fullname, 0L, *(char_u **)varp);
+ else
+ dict_add_nr_str(d, opt->fullname, *varp, NULL);
+ }
+ }
+ }
+
+ return d;
+}
+#endif