summaryrefslogtreecommitdiff
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-06 22:05:07 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-06 22:05:07 +0200
commit8e97bd74b5377753597e3d98e7123d8985c7fffd (patch)
tree25d909a542f5a015aa92d00512e46f1fb72f1ab4 /src/evalfunc.c
parent446cce6d537b036467033975a86729dbdc83f860 (diff)
downloadvim-git-8e97bd74b5377753597e3d98e7123d8985c7fffd.tar.gz
patch 7.4.2170v7.4.2170
Problem: Cannot get information about timers. Solution: Add timer_info().
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 375453446..50fa3bf72 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -396,6 +396,7 @@ static void f_tan(typval_T *argvars, typval_T *rettv);
static void f_tanh(typval_T *argvars, typval_T *rettv);
#endif
#ifdef FEAT_TIMERS
+static void f_timer_info(typval_T *argvars, typval_T *rettv);
static void f_timer_start(typval_T *argvars, typval_T *rettv);
static void f_timer_stop(typval_T *argvars, typval_T *rettv);
#endif
@@ -815,6 +816,7 @@ static struct fst
{"test_null_string", 0, 0, f_test_null_string},
{"test_settime", 1, 1, f_test_settime},
#ifdef FEAT_TIMERS
+ {"timer_info", 0, 1, f_timer_info},
{"timer_start", 2, 3, f_timer_start},
{"timer_stop", 1, 1, f_timer_stop},
#endif
@@ -11961,6 +11963,31 @@ free_callback(char_u *callback, partial_T *partial)
#ifdef FEAT_TIMERS
/*
+ * "timer_info([timer])" function
+ */
+ static void
+f_timer_info(typval_T *argvars, typval_T *rettv)
+{
+ timer_T *timer = NULL;
+
+ if (rettv_list_alloc(rettv) != OK)
+ return;
+ if (argvars[0].v_type != VAR_UNKNOWN)
+ {
+ if (argvars[0].v_type != VAR_NUMBER)
+ EMSG(_(e_number_exp));
+ else
+ {
+ timer = find_timer((int)get_tv_number(&argvars[0]));
+ if (timer != NULL)
+ add_timer_info(rettv, timer);
+ }
+ }
+ else
+ add_timer_info_all(rettv);
+}
+
+/*
* "timer_start(time, callback [, options])" function
*/
static void