patch 7.4.1541
Problem: Missing job_info().
Solution: Implement it.
diff --git a/src/eval.c b/src/eval.c
index 5807707..f4843e2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -632,6 +632,7 @@
static void f_items(typval_T *argvars, typval_T *rettv);
#ifdef FEAT_JOB_CHANNEL
static void f_job_getchannel(typval_T *argvars, typval_T *rettv);
+static void f_job_info(typval_T *argvars, typval_T *rettv);
static void f_job_setoptions(typval_T *argvars, typval_T *rettv);
static void f_job_start(typval_T *argvars, typval_T *rettv);
static void f_job_stop(typval_T *argvars, typval_T *rettv);
@@ -8208,6 +8209,7 @@
{"items", 1, 1, f_items},
#ifdef FEAT_JOB_CHANNEL
{"job_getchannel", 1, 1, f_job_getchannel},
+ {"job_info", 1, 1, f_job_info},
{"job_setoptions", 2, 2, f_job_setoptions},
{"job_start", 1, 2, f_job_start},
{"job_status", 1, 1, f_job_status},
@@ -14342,6 +14344,18 @@
}
/*
+ * "job_info()" function
+ */
+ static void
+f_job_info(typval_T *argvars, typval_T *rettv)
+{
+ job_T *job = get_job_arg(&argvars[0]);
+
+ if (job != NULL && rettv_dict_alloc(rettv) != FAIL)
+ job_info(job, rettv->vval.v_dict);
+}
+
+/*
* "job_setoptions()" function
*/
static void
@@ -14375,13 +14389,11 @@
f_job_status(typval_T *argvars, typval_T *rettv)
{
job_T *job = get_job_arg(&argvars[0]);
- char *result;
if (job != NULL)
{
- result = job_status(job);
rettv->v_type = VAR_STRING;
- rettv->vval.v_string = vim_strsave((char_u *)result);
+ rettv->vval.v_string = vim_strsave((char_u *)job_status(job));
}
}