updated for version 7.0229
diff --git a/src/eval.c b/src/eval.c
index 8d275dc..bfb9946 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8184,27 +8184,7 @@
     typval_T	*argvars;
     typval_T	*rettv;
 {
-    char_u	*word;
-    char_u	*kind = NULL;
-    char_u	*extra = NULL;
-    char_u	*info = NULL;
-    int		icase = FALSE;
-
-    if (argvars[0].v_type == VAR_DICT && argvars[0].vval.v_dict != NULL)
-    {
-	word = get_dict_string(argvars[0].vval.v_dict, (char_u *)"word", FALSE);
-	kind = get_dict_string(argvars[0].vval.v_dict, (char_u *)"kind", FALSE);
-	extra = get_dict_string(argvars[0].vval.v_dict,
-						     (char_u *)"menu", FALSE);
-	info = get_dict_string(argvars[0].vval.v_dict,
-						     (char_u *)"info", FALSE);
-	icase = get_dict_number(argvars[0].vval.v_dict, (char_u *)"icase");
-    }
-    else
-	word = get_tv_string_chk(&argvars[0]);
-    if (word != NULL)
-	rettv->vval.v_number = ins_compl_add(word, -1, icase,
-					       NULL, kind, extra, info, 0, 0);
+    rettv->vval.v_number = ins_compl_add_tv(&argvars[0], 0);
 }
 
 /*
diff --git a/src/proto/edit.pro b/src/proto/edit.pro
index 48c3f3f..031f695 100644
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -8,12 +8,13 @@
 void backspace_until_column __ARGS((int col));
 int vim_is_ctrl_x_key __ARGS((int c));
 int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
-int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u *kind, char_u *extra, char_u *info, int cdir, int flags));
+int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags));
 void set_completion __ARGS((int startcol, list_T *list));
 void ins_compl_show_pum __ARGS((void));
 char_u *find_word_start __ARGS((char_u *ptr));
 char_u *find_word_end __ARGS((char_u *ptr));
 int ins_compl_active __ARGS((void));
+int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
 void ins_compl_check_keys __ARGS((int frequency));
 int get_literal __ARGS((void));
 void insertchar __ARGS((int c, int flags, int second_indent));