diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 656bb18..ac5f17f 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 29
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -53,7 +53,6 @@
     the screen.
 -   mblen(NULL, 0) also in Vim 6.3?
 
-Implement printf("blah %d: %s", nr, str)?  Use vim_snprintf code.
 
 PLANNED FOR VERSION 7.0:
 
@@ -69,9 +68,10 @@
     First cleanup the Insert-mode completion.
 
     UI:
-    - Use 'wildmenu' kind of thing.
-    - Put the list of choices right under the place where they would be
-      inserted.
+    - At first: use 'wildmenu' kind of thing.
+    - Nicer: Display the list of choices right under the place where they
+      would be inserted in a kind of meny (use scrollbar when there are many
+      alternatives).
 
     Completion logic:
 	Use 'coupler' option to list items that connect words.  For C: ".,->".
@@ -1628,7 +1628,6 @@
 	mapname({idx}, mode)	return the name of the idx'th mapping.
 				Patch by Ilya Sher, 2004 Mar 4.
 				Return a list instead.
-	printf(format, arg, ..) How to prevent a crash???
 	char2hex()		convert char string to hex string.
 	attributes()		return file protection flags "drwxrwxrwx"
 	filecopy(from, to)	Copy a file
diff --git a/src/eval.c b/src/eval.c
index 4e202f4..596fa52 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1405,7 +1405,8 @@
 }
 
 /*
- * Call some vimL function and return the result as a string
+ * Call vimL function "func" and return the result as a string.
+ * Returns NULL when calling the function fails.
  * Uses argv[argc] for the function arguments.
  */
     void *
@@ -1416,20 +1417,43 @@
     int		safe;		/* use the sandbox */
 {
     typval_T	rettv;
-    char_u	*retval = NULL;
+    char_u	*retval;
 
     if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
 	return NULL;
 
     retval = vim_strsave(get_tv_string(&rettv));
-
     clear_tv(&rettv);
-
     return retval;
 }
 
+#if defined(FEAT_COMPL_FUNC) || defined(PROTO)
 /*
- * Call some vimL function and return the result as a list
+ * Call vimL function "func" and return the result as a number.
+ * Returns -1 when calling the function fails.
+ * Uses argv[argc] for the function arguments.
+ */
+    long
+call_func_retnr(func, argc, argv, safe)
+    char_u      *func;
+    int		argc;
+    char_u      **argv;
+    int		safe;		/* use the sandbox */
+{
+    typval_T	rettv;
+    long	retval;
+
+    if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+	return -1;
+
+    retval = get_tv_number_chk(&rettv, NULL);
+    clear_tv(&rettv);
+    return retval;
+}
+#endif
+
+/*
+ * Call vimL function "func" and return the result as a list
  * Uses argv[argc] for the function arguments.
  */
     void *
