diff --git a/src/proto/edit.pro b/src/proto/edit.pro
index 3c76a9e..a967037 100644
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -1,41 +1,41 @@
 /* edit.c */
-extern int edit __ARGS((int cmdchar, int startln, long count));
-extern void edit_putchar __ARGS((int c, int highlight));
-extern void edit_unputchar __ARGS((void));
-extern void display_dollar __ARGS((colnr_T col));
-extern void change_indent __ARGS((int type, int amount, int round, int replaced));
-extern void truncate_spaces __ARGS((char_u *line));
-extern void backspace_until_column __ARGS((int col));
-extern int vim_is_ctrl_x_key __ARGS((int c));
-extern int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
-extern void set_completion __ARGS((int startcol, list_T *list));
-extern void ins_compl_show_pum __ARGS((void));
-extern char_u *find_word_start __ARGS((char_u *ptr));
-extern char_u *find_word_end __ARGS((char_u *ptr));
-extern int ins_compl_active __ARGS((void));
-extern int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
-extern void ins_compl_check_keys __ARGS((int frequency));
-extern int get_literal __ARGS((void));
-extern void insertchar __ARGS((int c, int flags, int second_indent));
-extern void auto_format __ARGS((int trailblank, int prev_line));
-extern int comp_textwidth __ARGS((int ff));
-extern int stop_arrow __ARGS((void));
-extern void set_last_insert __ARGS((int c));
-extern void free_last_insert __ARGS((void));
-extern char_u *add_char2buf __ARGS((int c, char_u *s));
-extern void beginline __ARGS((int flags));
-extern int oneright __ARGS((void));
-extern int oneleft __ARGS((void));
-extern int cursor_up __ARGS((long n, int upd_topline));
-extern int cursor_down __ARGS((long n, int upd_topline));
-extern int stuff_inserted __ARGS((int c, long count, int no_esc));
-extern char_u *get_last_insert __ARGS((void));
-extern char_u *get_last_insert_save __ARGS((void));
-extern void replace_push __ARGS((int c));
-extern void fixthisline __ARGS((int (*get_the_indent)(void)));
-extern void fix_indent __ARGS((void));
-extern int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
-extern int hkmap __ARGS((int c));
-extern void ins_scroll __ARGS((void));
-extern void ins_horscroll __ARGS((void));
+int edit __ARGS((int cmdchar, int startln, long count));
+void edit_putchar __ARGS((int c, int highlight));
+void edit_unputchar __ARGS((void));
+void display_dollar __ARGS((colnr_T col));
+void change_indent __ARGS((int type, int amount, int round, int replaced));
+void truncate_spaces __ARGS((char_u *line));
+void backspace_until_column __ARGS((int col));
+int vim_is_ctrl_x_key __ARGS((int c));
+int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
+void set_completion __ARGS((int startcol, list_T *list));
+void ins_compl_show_pum __ARGS((void));
+char_u *find_word_start __ARGS((char_u *ptr));
+char_u *find_word_end __ARGS((char_u *ptr));
+int ins_compl_active __ARGS((void));
+int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
+void ins_compl_check_keys __ARGS((int frequency));
+int get_literal __ARGS((void));
+void insertchar __ARGS((int c, int flags, int second_indent));
+void auto_format __ARGS((int trailblank, int prev_line));
+int comp_textwidth __ARGS((int ff));
+int stop_arrow __ARGS((void));
+void set_last_insert __ARGS((int c));
+void free_last_insert __ARGS((void));
+char_u *add_char2buf __ARGS((int c, char_u *s));
+void beginline __ARGS((int flags));
+int oneright __ARGS((void));
+int oneleft __ARGS((void));
+int cursor_up __ARGS((long n, int upd_topline));
+int cursor_down __ARGS((long n, int upd_topline));
+int stuff_inserted __ARGS((int c, long count, int no_esc));
+char_u *get_last_insert __ARGS((void));
+char_u *get_last_insert_save __ARGS((void));
+void replace_push __ARGS((int c));
+void fixthisline __ARGS((int (*get_the_indent)(void)));
+void fix_indent __ARGS((void));
+int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
+int hkmap __ARGS((int c));
+void ins_scroll __ARGS((void));
+void ins_horscroll __ARGS((void));
 /* vim: set ft=c : */
