diff --git a/src/proto/fold.pro b/src/proto/fold.pro
index 8551093..3318bbd 100644
--- a/src/proto/fold.pro
+++ b/src/proto/fold.pro
@@ -1,41 +1,41 @@
 /* fold.c */
-extern void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
-extern int hasAnyFolding __ARGS((win_T *win));
-extern int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
-extern int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
-extern int foldLevel __ARGS((linenr_T lnum));
-extern int lineFolded __ARGS((win_T *win, linenr_T lnum));
-extern long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
-extern int foldmethodIsManual __ARGS((win_T *wp));
-extern int foldmethodIsIndent __ARGS((win_T *wp));
-extern int foldmethodIsExpr __ARGS((win_T *wp));
-extern int foldmethodIsMarker __ARGS((win_T *wp));
-extern int foldmethodIsSyntax __ARGS((win_T *wp));
-extern int foldmethodIsDiff __ARGS((win_T *wp));
-extern void closeFold __ARGS((linenr_T lnum, long count));
-extern void closeFoldRecurse __ARGS((linenr_T lnum));
-extern void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
-extern void openFold __ARGS((linenr_T lnum, long count));
-extern void openFoldRecurse __ARGS((linenr_T lnum));
-extern void foldOpenCursor __ARGS((void));
-extern void newFoldLevel __ARGS((void));
-extern void foldCheckClose __ARGS((void));
-extern int foldManualAllowed __ARGS((int create));
-extern void foldCreate __ARGS((linenr_T start, linenr_T end));
-extern void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
-extern void clearFolding __ARGS((win_T *win));
-extern void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
-extern void foldUpdateAll __ARGS((win_T *win));
-extern int foldMoveTo __ARGS((int updown, int dir, long count));
-extern void foldInitWin __ARGS((win_T *newwin));
-extern int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
-extern void foldAdjustVisual __ARGS((void));
-extern void foldAdjustCursor __ARGS((void));
-extern void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
-extern void deleteFoldRecurse __ARGS((garray_T *gap));
-extern void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern int getDeepestNesting __ARGS((void));
-extern char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
-extern void foldtext_cleanup __ARGS((char_u *str));
-extern int put_folds __ARGS((FILE *fd, win_T *wp));
+void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
+int hasAnyFolding __ARGS((win_T *win));
+int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
+int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
+int foldLevel __ARGS((linenr_T lnum));
+int lineFolded __ARGS((win_T *win, linenr_T lnum));
+long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
+int foldmethodIsManual __ARGS((win_T *wp));
+int foldmethodIsIndent __ARGS((win_T *wp));
+int foldmethodIsExpr __ARGS((win_T *wp));
+int foldmethodIsMarker __ARGS((win_T *wp));
+int foldmethodIsSyntax __ARGS((win_T *wp));
+int foldmethodIsDiff __ARGS((win_T *wp));
+void closeFold __ARGS((linenr_T lnum, long count));
+void closeFoldRecurse __ARGS((linenr_T lnum));
+void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
+void openFold __ARGS((linenr_T lnum, long count));
+void openFoldRecurse __ARGS((linenr_T lnum));
+void foldOpenCursor __ARGS((void));
+void newFoldLevel __ARGS((void));
+void foldCheckClose __ARGS((void));
+int foldManualAllowed __ARGS((int create));
+void foldCreate __ARGS((linenr_T start, linenr_T end));
+void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
+void clearFolding __ARGS((win_T *win));
+void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
+void foldUpdateAll __ARGS((win_T *win));
+int foldMoveTo __ARGS((int updown, int dir, long count));
+void foldInitWin __ARGS((win_T *newwin));
+int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
+void foldAdjustVisual __ARGS((void));
+void foldAdjustCursor __ARGS((void));
+void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
+void deleteFoldRecurse __ARGS((garray_T *gap));
+void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
+int getDeepestNesting __ARGS((void));
+char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
+void foldtext_cleanup __ARGS((char_u *str));
+int put_folds __ARGS((FILE *fd, win_T *wp));
 /* vim: set ft=c : */
