diff --git a/src/proto/ex_cmds2.pro b/src/proto/ex_cmds2.pro
index 336e01e..9c89329 100644
--- a/src/proto/ex_cmds2.pro
+++ b/src/proto/ex_cmds2.pro
@@ -1,83 +1,83 @@
 /* ex_cmds2.c */
-void do_debug __ARGS((char_u *cmd));
-void ex_debug __ARGS((exarg_T *eap));
-void dbg_check_breakpoint __ARGS((exarg_T *eap));
-int dbg_check_skipped __ARGS((exarg_T *eap));
-void ex_breakadd __ARGS((exarg_T *eap));
-void ex_debuggreedy __ARGS((exarg_T *eap));
-void ex_breakdel __ARGS((exarg_T *eap));
-void ex_breaklist __ARGS((exarg_T *eap));
-linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
-int has_profiling __ARGS((int file, char_u *fname, int *fp));
-void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
-void profile_zero __ARGS((proftime_T *tm));
-void profile_start __ARGS((proftime_T *tm));
-void profile_end __ARGS((proftime_T *tm));
-void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
-void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
-void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
-void profile_get_wait __ARGS((proftime_T *tm));
-void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
-int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
-int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
-char *profile_msg __ARGS((proftime_T *tm));
-void ex_profile __ARGS((exarg_T *eap));
-void profile_dump __ARGS((void));
-void script_prof_save __ARGS((proftime_T *tm));
-void script_prof_restore __ARGS((proftime_T *tm));
-void prof_inchar_enter __ARGS((void));
-void prof_inchar_exit __ARGS((void));
-int prof_def_func __ARGS((void));
-int autowrite __ARGS((buf_T *buf, int forceit));
-void autowrite_all __ARGS((void));
-int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
-void browse_save_fname __ARGS((buf_T *buf));
-void dialog_changed __ARGS((buf_T *buf, int checkall));
-int can_abandon __ARGS((buf_T *buf, int forceit));
-int check_changed_any __ARGS((int hidden));
-int check_fname __ARGS((void));
-int buf_write_all __ARGS((buf_T *buf, int forceit));
-int get_arglist __ARGS((garray_T *gap, char_u *str));
-int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
-void set_arglist __ARGS((char_u *str));
-void check_arg_idx __ARGS((win_T *win));
-void ex_args __ARGS((exarg_T *eap));
-void ex_previous __ARGS((exarg_T *eap));
-void ex_rewind __ARGS((exarg_T *eap));
-void ex_last __ARGS((exarg_T *eap));
-void ex_argument __ARGS((exarg_T *eap));
-void do_argfile __ARGS((exarg_T *eap, int argn));
-void ex_next __ARGS((exarg_T *eap));
-void ex_argedit __ARGS((exarg_T *eap));
-void ex_argadd __ARGS((exarg_T *eap));
-void ex_argdelete __ARGS((exarg_T *eap));
-void ex_listdo __ARGS((exarg_T *eap));
-void ex_compiler __ARGS((exarg_T *eap));
-void ex_runtime __ARGS((exarg_T *eap));
-int source_runtime __ARGS((char_u *name, int all));
-int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
-void ex_options __ARGS((exarg_T *eap));
-void ex_source __ARGS((exarg_T *eap));
-linenr_T *source_breakpoint __ARGS((void *cookie));
-int *source_dbg_tick __ARGS((void *cookie));
-int source_level __ARGS((void *cookie));
-int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
-void ex_scriptnames __ARGS((exarg_T *eap));
-void scriptnames_slash_adjust __ARGS((void));
-char_u *get_scriptname __ARGS((scid_T id));
-void free_scriptnames __ARGS((void));
-char *fgets_cr __ARGS((char *s, int n, FILE *stream));
-char_u *getsourceline __ARGS((int c, void *cookie, int indent));
-void script_line_start __ARGS((void));
-void script_line_exec __ARGS((void));
-void script_line_end __ARGS((void));
-void ex_scriptencoding __ARGS((exarg_T *eap));
-void ex_finish __ARGS((exarg_T *eap));
-void do_finish __ARGS((exarg_T *eap, int reanimate));
-int source_finished __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
-void ex_checktime __ARGS((exarg_T *eap));
-char_u *get_mess_lang __ARGS((void));
-void set_lang_var __ARGS((void));
-void ex_language __ARGS((exarg_T *eap));
-char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
+extern void do_debug __ARGS((char_u *cmd));
+extern void ex_debug __ARGS((exarg_T *eap));
+extern void dbg_check_breakpoint __ARGS((exarg_T *eap));
+extern int dbg_check_skipped __ARGS((exarg_T *eap));
+extern void ex_breakadd __ARGS((exarg_T *eap));
+extern void ex_debuggreedy __ARGS((exarg_T *eap));
+extern void ex_breakdel __ARGS((exarg_T *eap));
+extern void ex_breaklist __ARGS((exarg_T *eap));
+extern linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
+extern int has_profiling __ARGS((int file, char_u *fname, int *fp));
+extern void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
+extern void profile_start __ARGS((proftime_T *tm));
+extern void profile_end __ARGS((proftime_T *tm));
+extern void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
+extern char *profile_msg __ARGS((proftime_T *tm));
+extern void profile_zero __ARGS((proftime_T *tm));
+extern void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
+extern void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
+extern void profile_get_wait __ARGS((proftime_T *tm));
+extern void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
+extern int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
+extern int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
+extern void ex_profile __ARGS((exarg_T *eap));
+extern void profile_dump __ARGS((void));
+extern void script_prof_save __ARGS((proftime_T *tm));
+extern void script_prof_restore __ARGS((proftime_T *tm));
+extern void prof_inchar_enter __ARGS((void));
+extern void prof_inchar_exit __ARGS((void));
+extern int prof_def_func __ARGS((void));
+extern int autowrite __ARGS((buf_T *buf, int forceit));
+extern void autowrite_all __ARGS((void));
+extern int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
+extern void browse_save_fname __ARGS((buf_T *buf));
+extern void dialog_changed __ARGS((buf_T *buf, int checkall));
+extern int can_abandon __ARGS((buf_T *buf, int forceit));
+extern int check_changed_any __ARGS((int hidden));
+extern int check_fname __ARGS((void));
+extern int buf_write_all __ARGS((buf_T *buf, int forceit));
+extern int get_arglist __ARGS((garray_T *gap, char_u *str));
+extern int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
+extern void set_arglist __ARGS((char_u *str));
+extern void check_arg_idx __ARGS((win_T *win));
+extern void ex_args __ARGS((exarg_T *eap));
+extern void ex_previous __ARGS((exarg_T *eap));
+extern void ex_rewind __ARGS((exarg_T *eap));
+extern void ex_last __ARGS((exarg_T *eap));
+extern void ex_argument __ARGS((exarg_T *eap));
+extern void do_argfile __ARGS((exarg_T *eap, int argn));
+extern void ex_next __ARGS((exarg_T *eap));
+extern void ex_argedit __ARGS((exarg_T *eap));
+extern void ex_argadd __ARGS((exarg_T *eap));
+extern void ex_argdelete __ARGS((exarg_T *eap));
+extern void ex_listdo __ARGS((exarg_T *eap));
+extern void ex_compiler __ARGS((exarg_T *eap));
+extern void ex_runtime __ARGS((exarg_T *eap));
+extern int source_runtime __ARGS((char_u *name, int all));
+extern int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
+extern void ex_options __ARGS((exarg_T *eap));
+extern void ex_source __ARGS((exarg_T *eap));
+extern linenr_T *source_breakpoint __ARGS((void *cookie));
+extern int *source_dbg_tick __ARGS((void *cookie));
+extern int source_level __ARGS((void *cookie));
+extern int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
+extern void ex_scriptnames __ARGS((exarg_T *eap));
+extern void scriptnames_slash_adjust __ARGS((void));
+extern char_u *get_scriptname __ARGS((scid_T id));
+extern void free_scriptnames __ARGS((void));
+extern char *fgets_cr __ARGS((char *s, int n, FILE *stream));
+extern char_u *getsourceline __ARGS((int c, void *cookie, int indent));
+extern void script_line_start __ARGS((void));
+extern void script_line_exec __ARGS((void));
+extern void script_line_end __ARGS((void));
+extern void ex_scriptencoding __ARGS((exarg_T *eap));
+extern void ex_finish __ARGS((exarg_T *eap));
+extern void do_finish __ARGS((exarg_T *eap, int reanimate));
+extern int source_finished __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
+extern void ex_checktime __ARGS((exarg_T *eap));
+extern char_u *get_mess_lang __ARGS((void));
+extern void set_lang_var __ARGS((void));
+extern void ex_language __ARGS((exarg_T *eap));
+extern char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
 /* vim: set ft=c : */
