diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index ec6e573..992409b 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -1,52 +1,52 @@
 /* ex_docmd.c */
-void do_exmode __ARGS((int improved));
-int do_cmdline_cmd __ARGS((char_u *cmd));
-int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
-int getline_equal __ARGS((char_u *(*getline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
-void *getline_cookie __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
-int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
-int cmd_exists __ARGS((char_u *name));
-char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
-char_u *skip_range __ARGS((char_u *cmd, int *ctx));
-void ex_ni __ARGS((exarg_T *eap));
-int expand_filename __ARGS((exarg_T *eap, char_u **cmdlinep, char_u **errormsgp));
-void separate_nextcmd __ARGS((exarg_T *eap));
-int ends_excmd __ARGS((int c));
-char_u *find_nextcmd __ARGS((char_u *p));
-char_u *check_nextcmd __ARGS((char_u *p));
-char_u *get_command_name __ARGS((expand_T *xp, int idx));
-void ex_comclear __ARGS((exarg_T *eap));
-void uc_clear __ARGS((garray_T *gap));
-char_u *get_user_commands __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_flags __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_nargs __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_complete __ARGS((expand_T *xp, int idx));
-int parse_compl_arg __ARGS((char_u *value, int vallen, int *complp, long *argt, char_u **compl_arg));
-void not_exiting __ARGS((void));
-void tabpage_close __ARGS((int forceit));
-void tabpage_close_other __ARGS((tabpage_T *tp, int forceit));
-void ex_all __ARGS((exarg_T *eap));
-void handle_drop __ARGS((int filec, char_u **filev, int split));
-void alist_clear __ARGS((alist_T *al));
-void alist_init __ARGS((alist_T *al));
-void alist_unlink __ARGS((alist_T *al));
-void alist_new __ARGS((void));
-void alist_expand __ARGS((int *fnum_list, int fnum_len));
-void alist_set __ARGS((alist_T *al, int count, char_u **files, int use_curbuf, int *fnum_list, int fnum_len));
-void alist_add __ARGS((alist_T *al, char_u *fname, int set_fnum));
-void alist_slash_adjust __ARGS((void));
-void ex_splitview __ARGS((exarg_T *eap));
-void tabpage_new __ARGS((void));
-void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin));
-void free_cd_dir __ARGS((void));
-void do_sleep __ARGS((long msec));
-int vim_mkdir_emsg __ARGS((char_u *name, int prot));
-FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode));
-void update_topline_cursor __ARGS((void));
-void exec_normal_cmd __ARGS((char_u *cmd, int remap, int silent));
-char_u *eval_vars __ARGS((char_u *src, int *usedlen, linenr_T *lnump, char_u **errormsg, char_u *srcstart));
-char_u *expand_sfile __ARGS((char_u *arg));
-int put_eol __ARGS((FILE *fd));
-int put_line __ARGS((FILE *fd, char *s));
-void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname));
+extern void do_exmode __ARGS((int improved));
+extern int do_cmdline_cmd __ARGS((char_u *cmd));
+extern int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
+extern int getline_equal __ARGS((char_u *(*getline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+extern void *getline_cookie __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
+extern int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+extern int cmd_exists __ARGS((char_u *name));
+extern char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
+extern char_u *skip_range __ARGS((char_u *cmd, int *ctx));
+extern void ex_ni __ARGS((exarg_T *eap));
+extern int expand_filename __ARGS((exarg_T *eap, char_u **cmdlinep, char_u **errormsgp));
+extern void separate_nextcmd __ARGS((exarg_T *eap));
+extern int ends_excmd __ARGS((int c));
+extern char_u *find_nextcmd __ARGS((char_u *p));
+extern char_u *check_nextcmd __ARGS((char_u *p));
+extern char_u *get_command_name __ARGS((expand_T *xp, int idx));
+extern void ex_comclear __ARGS((exarg_T *eap));
+extern void uc_clear __ARGS((garray_T *gap));
+extern char_u *get_user_commands __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_flags __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_nargs __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_complete __ARGS((expand_T *xp, int idx));
+extern int parse_compl_arg __ARGS((char_u *value, int vallen, int *complp, long *argt, char_u **compl_arg));
+extern void not_exiting __ARGS((void));
+extern void tabpage_close __ARGS((int forceit));
+extern void tabpage_close_other __ARGS((tabpage_T *tp, int forceit));
+extern void ex_all __ARGS((exarg_T *eap));
+extern void handle_drop __ARGS((int filec, char_u **filev, int split));
+extern void alist_clear __ARGS((alist_T *al));
+extern void alist_init __ARGS((alist_T *al));
+extern void alist_unlink __ARGS((alist_T *al));
+extern void alist_new __ARGS((void));
+extern void alist_expand __ARGS((int *fnum_list, int fnum_len));
+extern void alist_set __ARGS((alist_T *al, int count, char_u **files, int use_curbuf, int *fnum_list, int fnum_len));
+extern void alist_add __ARGS((alist_T *al, char_u *fname, int set_fnum));
+extern void alist_slash_adjust __ARGS((void));
+extern void ex_splitview __ARGS((exarg_T *eap));
+extern void tabpage_new __ARGS((void));
+extern void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin));
+extern void free_cd_dir __ARGS((void));
+extern void do_sleep __ARGS((long msec));
+extern int vim_mkdir_emsg __ARGS((char_u *name, int prot));
+extern FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode));
+extern void update_topline_cursor __ARGS((void));
+extern void exec_normal_cmd __ARGS((char_u *cmd, int remap, int silent));
+extern char_u *eval_vars __ARGS((char_u *src, int *usedlen, linenr_T *lnump, char_u **errormsg, char_u *srcstart));
+extern char_u *expand_sfile __ARGS((char_u *arg));
+extern int put_eol __ARGS((FILE *fd));
+extern int put_line __ARGS((FILE *fd, char *s));
+extern void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname));
 /* vim: set ft=c : */
