aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2021-12-09 21:10:58 +0100
committerBjörn Linse <bjorn.linse@gmail.com>2021-12-09 21:10:58 +0100
commit51822f065590154561a59435ca920207fd39bdda (patch)
tree68b23bad187daef4b6a01628747d87c0d1f60526 /src/nvim/eval.c
parent2ec0e0a868ba20373ef4cd2d2540db7e829ddc56 (diff)
downloadrneovim-51822f065590154561a59435ca920207fd39bdda.tar.gz
rneovim-51822f065590154561a59435ca920207fd39bdda.tar.bz2
rneovim-51822f065590154561a59435ca920207fd39bdda.zip
refactor(misc1): move out autocmd related functions
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 85e81ee975..d45aa8194c 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -303,6 +303,31 @@ const list_T *eval_msgpack_type_lists[] = {
[kMPExt] = NULL,
};
+dict_T *get_v_event(save_v_event_T *sve)
+{
+ dict_T *v_event = get_vim_var_dict(VV_EVENT);
+
+ if (v_event->dv_hashtab.ht_used > 0) {
+ // recursive use of v:event, save, make empty and restore later
+ sve->sve_did_save = true;
+ sve->sve_hashtab = v_event->dv_hashtab;
+ hash_init(&v_event->dv_hashtab);
+ } else {
+ sve->sve_did_save = false;
+ }
+ return v_event;
+}
+
+void restore_v_event(dict_T *v_event, save_v_event_T *sve)
+{
+ tv_dict_free_contents(v_event);
+ if (sve->sve_did_save) {
+ v_event->dv_hashtab = sve->sve_hashtab;
+ } else {
+ hash_init(&v_event->dv_hashtab);
+ }
+}
+
// Return "n1" divided by "n2", taking care of dividing by zero.
varnumber_T num_divide(varnumber_T n1, varnumber_T n2)
FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT