diff -c src/edit.c.orig src/edit.c
*** src/edit.c.orig	2011-08-21 09:59:56.506989500 +0900
--- src/edit.c	2011-08-21 11:18:08.813333000 +0900
***************
*** 3367,3372 ****
--- 3367,3381 ----
      ins_bytes(compl_leader + ins_compl_len());
      compl_used_match = FALSE;
  
+ #ifdef FEAT_COMPL_FUNC
+     /*
+      * To call eval functions when leader is changed, restart completion
+      * every time.
+      */
+     if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
+         ins_compl_restart();
+ #endif
+ 
      if (compl_started)
  	ins_compl_set_original_text(compl_leader);
      else
