patch 7.4.2063
Problem:    eval.c is still too big.
Solution:   Split off internal functions to evalfunc.c.
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index d7315b0..c6d202d 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -25,6 +25,7 @@
 int eval_foldexpr(char_u *arg, int *cp);
 void ex_let(exarg_T *eap);
 void list_hashtable_vars(hashtab_T *ht, char_u *prefix, int empty, int *first);
+int check_changedtick(char_u *arg);
 char_u *get_lval(char_u *name, typval_T *rettv, lval_T *lp, int unlet, int skip, int flags, int fne_flags);
 void clear_lval(lval_T *lp);
 void *eval_for_line(char_u *arg, int *errp, char_u **nextcmdp, int skip);
@@ -38,6 +39,7 @@
 char_u *get_user_var_name(expand_T *xp, int idx);
 int eval0(char_u *arg, typval_T *rettv, char_u **nextcmd, int evaluate);
 int eval1(char_u **arg, typval_T *rettv, int evaluate);
+int get_option_tv(char_u **arg, typval_T *rettv, int evaluate);
 void partial_unref(partial_T *pt);
 int tv_equal(typval_T *tv1, typval_T *tv2, int ic, int recursive);
 int get_copyID(void);
@@ -50,18 +52,10 @@
 char_u *tv2string(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID);
 char_u *string_quote(char_u *str, int function);
 int string2float(char_u *text, float_T *value);
-char_u *get_function_name(expand_T *xp, int idx);
-char_u *get_expr_name(expand_T *xp, int idx);
-int find_internal_func(char_u *name);
-int call_internal_func(char_u *name, int argcount, typval_T *argvars, typval_T *rettv);
-buf_T *buflist_find_by_name(char_u *name, int curtab_only);
-void execute_redir_str(char_u *value, int value_len);
-void mzscheme_call_vim(char_u *name, typval_T *args, typval_T *rettv);
-float_T vim_round(float_T f);
-long do_searchpair(char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit);
-char_u *get_callback(typval_T *arg, partial_T **pp);
-void free_callback(char_u *callback, partial_T *partial);
+pos_T *var2fpos(typval_T *varp, int dollar_lnum, int *fnum);
+int list2fpos(typval_T *arg, pos_T *posp, int *fnump, colnr_T *curswantp);
 int get_id_len(char_u **arg);
+int get_name_len(char_u **arg, char_u **alias, int evaluate, int verbose);
 char_u *find_name_end(char_u *arg, char_u **expr_start, char_u **expr_end, int flags);
 int eval_isnamec(int c);
 int eval_isnamec1(int c);
@@ -78,32 +72,43 @@
 char_u *v_exception(char_u *oldval);
 char_u *v_throwpoint(char_u *oldval);
 char_u *set_cmdarg(exarg_T *eap, char_u *oldarg);
+int get_var_tv(char_u *name, int len, typval_T *rettv, dictitem_T **dip, int verbose, int no_autoload);
 int handle_subscript(char_u **arg, typval_T *rettv, int evaluate, int verbose);
 typval_T *alloc_tv(void);
 void free_tv(typval_T *varp);
 void clear_tv(typval_T *varp);
+void init_tv(typval_T *varp);
 varnumber_T get_tv_number(typval_T *varp);
 varnumber_T get_tv_number_chk(typval_T *varp, int *denote);
+float_T get_tv_float(typval_T *varp);
 char_u *get_tv_string(typval_T *varp);
 char_u *get_tv_string_buf(typval_T *varp, char_u *buf);
 char_u *get_tv_string_chk(typval_T *varp);
 char_u *get_tv_string_buf_chk(typval_T *varp, char_u *buf);
 dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload);
+dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload);
 char_u *get_var_value(char_u *name);
 void new_script_vars(scid_T id);
 void init_var_dict(dict_T *dict, dictitem_T *dict_var, int scope);
 void unref_var_dict(dict_T *dict);
 void vars_clear(hashtab_T *ht);
 void vars_clear_ext(hashtab_T *ht, int free_val);
+void set_var(char_u *name, typval_T *tv, int copy);
 int var_check_ro(int flags, char_u *name, int use_gettext);
+int var_check_fixed(int flags, char_u *name, int use_gettext);
 int var_check_func_name(char_u *name, int new_var);
 int valid_varname(char_u *varname);
 int tv_check_lock(int lock, char_u *name, int use_gettext);
 void copy_tv(typval_T *from, typval_T *to);
 int item_copy(typval_T *from, typval_T *to, int deep, int copyID);
+void get_user_input(typval_T *argvars, typval_T *rettv, int inputdialog, int secret);
 void ex_echo(exarg_T *eap);
 void ex_echohl(exarg_T *eap);
 void ex_execute(exarg_T *eap);
+win_T *find_win_by_nr(typval_T *vp, tabpage_T *tp);
+win_T *find_tabwin(typval_T *wvp, typval_T *tvp);
+void getwinvar(typval_T *argvars, typval_T *rettv, int off);
+void setwinvar(typval_T *argvars, typval_T *rettv, int off);
 char_u *autoload_name(char_u *name);
 int script_autoload(char_u *name, int reload);
 int read_viminfo_varlist(vir_T *virp, int writing);
@@ -112,6 +117,15 @@
 void last_set_msg(scid_T scriptID);
 void ex_oldfiles(exarg_T *eap);
 void reset_v_option_vars(void);
+void prepare_assert_error(garray_T *gap);
+void assert_error(garray_T *gap);
+void assert_equal_common(typval_T *argvars, assert_type_T atype);
+void assert_match_common(typval_T *argvars, assert_type_T atype);
+void assert_bool(typval_T *argvars, int isTrue);
+void assert_exception(typval_T *argvars);
+void assert_fails(typval_T *argvars);
+void fill_assert_error(garray_T *gap, typval_T *opt_msg_tv, char_u *exp_str, typval_T *exp_tv, typval_T *got_tv, assert_type_T atype);
 int modify_fname(char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen);
 char_u *do_string_sub(char_u *str, char_u *pat, char_u *sub, char_u *flags);
+void filter_map(typval_T *argvars, typval_T *rettv, int map);
 /* vim: set ft=c : */