summaryrefslogtreecommitdiffstats
path: root/src/scriptfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scriptfile.c')
-rw-r--r--src/scriptfile.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 76c78e7548..aae3be20ab 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1933,6 +1933,36 @@ get_sourced_lnum(
? ((source_cookie_T *)cookie)->sourcing_lnum
: SOURCING_LNUM;
}
+
+ void
+f_getscriptinfo(typval_T *argvars UNUSED, typval_T *rettv)
+{
+ int i;
+ list_T *l;
+
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
+
+ l = rettv->vval.v_list;
+
+ for (i = 1; i <= script_items.ga_len; ++i)
+ {
+ scriptitem_T *si = SCRIPT_ITEM(i);
+ dict_T *d;
+
+ if (si->sn_name == NULL)
+ continue;
+
+ if ((d = dict_alloc()) == NULL
+ || list_append_dict(l, d) == FAIL
+ || dict_add_string(d, "name", si->sn_name) == FAIL
+ || dict_add_number(d, "sid", i) == FAIL
+ || dict_add_bool(d, "autoload",
+ si->sn_state == SN_STATE_NOT_LOADED) == FAIL)
+ return;
+ }
+}
+
#endif
static char_u *