diff --git a/src/proto/mark.pro b/src/proto/mark.pro
index 13e1868..fe44031 100644
--- a/src/proto/mark.pro
+++ b/src/proto/mark.pro
@@ -1,30 +1,30 @@
 /* mark.c */
-int setmark __ARGS((int c));
-int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
-void setpcmark __ARGS((void));
-void checkpcmark __ARGS((void));
-pos_T *movemark __ARGS((int count));
-pos_T *movechangelist __ARGS((int count));
-pos_T *getmark __ARGS((int c, int changefile));
-pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
-pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
-void fmarks_check_names __ARGS((buf_T *buf));
-int check_mark __ARGS((pos_T *pos));
-void clrallmarks __ARGS((buf_T *buf));
-char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
-void do_marks __ARGS((exarg_T *eap));
-void ex_delmarks __ARGS((exarg_T *eap));
-void ex_jumps __ARGS((exarg_T *eap));
-void ex_changes __ARGS((exarg_T *eap));
-void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
-void copy_jumplist __ARGS((win_T *from, win_T *to));
-void free_jumplist __ARGS((win_T *wp));
-void set_last_cursor __ARGS((win_T *win));
-void free_all_marks __ARGS((void));
-int read_viminfo_filemark __ARGS((vir_T *virp, int force));
-void write_viminfo_filemarks __ARGS((FILE *fp));
-int removable __ARGS((char_u *name));
-int write_viminfo_marks __ARGS((FILE *fp_out));
-void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
+extern int setmark __ARGS((int c));
+extern int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
+extern void setpcmark __ARGS((void));
+extern void checkpcmark __ARGS((void));
+extern pos_T *movemark __ARGS((int count));
+extern pos_T *movechangelist __ARGS((int count));
+extern pos_T *getmark __ARGS((int c, int changefile));
+extern pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
+extern pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
+extern void fmarks_check_names __ARGS((buf_T *buf));
+extern int check_mark __ARGS((pos_T *pos));
+extern void clrallmarks __ARGS((buf_T *buf));
+extern char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
+extern void do_marks __ARGS((exarg_T *eap));
+extern void ex_delmarks __ARGS((exarg_T *eap));
+extern void ex_jumps __ARGS((exarg_T *eap));
+extern void ex_changes __ARGS((exarg_T *eap));
+extern void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
+extern void copy_jumplist __ARGS((win_T *from, win_T *to));
+extern void free_jumplist __ARGS((win_T *wp));
+extern void set_last_cursor __ARGS((win_T *win));
+extern void free_all_marks __ARGS((void));
+extern int read_viminfo_filemark __ARGS((vir_T *virp, int force));
+extern void write_viminfo_filemarks __ARGS((FILE *fp));
+extern int removable __ARGS((char_u *name));
+extern int write_viminfo_marks __ARGS((FILE *fp_out));
+extern void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
 /* vim: set ft=c : */
