diff --git a/src/proto/fileio.pro b/src/proto/fileio.pro
index 1051ff4..a8c4142 100644
--- a/src/proto/fileio.pro
+++ b/src/proto/fileio.pro
@@ -1,51 +1,51 @@
 /* fileio.c */
-extern void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr));
-extern int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags));
-extern int prep_exarg __ARGS((exarg_T *eap, buf_T *buf));
-extern int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
-extern void msg_add_fname __ARGS((buf_T *buf, char_u *fname));
-extern void msg_add_lines __ARGS((int insert_space, long lnum, long nchars));
-extern char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name));
-extern void shorten_fnames __ARGS((int force));
-extern void shorten_filenames __ARGS((char_u **fnames, int count));
-extern char_u *modname __ARGS((char_u *fname, char_u *ext, int prepend_dot));
-extern char_u *buf_modname __ARGS((int shortname, char_u *fname, char_u *ext, int prepend_dot));
-extern int vim_fgets __ARGS((char_u *buf, int size, FILE *fp));
-extern int tag_fgets __ARGS((char_u *buf, int size, FILE *fp));
-extern int vim_rename __ARGS((char_u *from, char_u *to));
-extern int check_timestamps __ARGS((int focus));
-extern int buf_check_timestamp __ARGS((buf_T *buf, int focus));
-extern void buf_reload __ARGS((buf_T *buf, int orig_mode));
-extern void buf_store_time __ARGS((buf_T *buf, struct stat *st, char_u *fname));
-extern void write_lnum_adjust __ARGS((linenr_T offset));
-extern void vim_deltempdir __ARGS((void));
-extern char_u *vim_tempname __ARGS((int extra_char));
-extern void forward_slash __ARGS((char_u *fname));
-extern void aubuflocal_remove __ARGS((buf_T *buf));
-extern int au_has_group __ARGS((char_u *name));
-extern void do_augroup __ARGS((char_u *arg, int del_group));
-extern void free_all_autocmds __ARGS((void));
-extern int check_ei __ARGS((void));
-extern char_u *au_event_disable __ARGS((char *what));
-extern void au_event_restore __ARGS((char_u *old_ei));
-extern void do_autocmd __ARGS((char_u *arg, int forceit));
-extern int do_doautocmd __ARGS((char_u *arg, int do_msg));
-extern void ex_doautoall __ARGS((exarg_T *eap));
-extern void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
-extern void aucmd_restbuf __ARGS((aco_save_T *aco));
-extern int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
-extern int apply_autocmds_retval __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf, int *retval));
-extern int has_cursorhold __ARGS((void));
-extern int trigger_cursorhold __ARGS((void));
-extern int has_cursormoved __ARGS((void));
-extern int has_cursormovedI __ARGS((void));
-extern int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
-extern char_u *get_augroup_name __ARGS((expand_T *xp, int idx));
-extern char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd));
-extern char_u *get_event_name __ARGS((expand_T *xp, int idx));
-extern int autocmd_supported __ARGS((char_u *name));
-extern int au_exists __ARGS((char_u *arg));
-extern int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
-extern int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
-extern char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
+void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr));
+int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags));
+int prep_exarg __ARGS((exarg_T *eap, buf_T *buf));
+int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
+void msg_add_fname __ARGS((buf_T *buf, char_u *fname));
+void msg_add_lines __ARGS((int insert_space, long lnum, long nchars));
+char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name));
+void shorten_fnames __ARGS((int force));
+void shorten_filenames __ARGS((char_u **fnames, int count));
+char_u *modname __ARGS((char_u *fname, char_u *ext, int prepend_dot));
+char_u *buf_modname __ARGS((int shortname, char_u *fname, char_u *ext, int prepend_dot));
+int vim_fgets __ARGS((char_u *buf, int size, FILE *fp));
+int tag_fgets __ARGS((char_u *buf, int size, FILE *fp));
+int vim_rename __ARGS((char_u *from, char_u *to));
+int check_timestamps __ARGS((int focus));
+int buf_check_timestamp __ARGS((buf_T *buf, int focus));
+void buf_reload __ARGS((buf_T *buf, int orig_mode));
+void buf_store_time __ARGS((buf_T *buf, struct stat *st, char_u *fname));
+void write_lnum_adjust __ARGS((linenr_T offset));
+void vim_deltempdir __ARGS((void));
+char_u *vim_tempname __ARGS((int extra_char));
+void forward_slash __ARGS((char_u *fname));
+void aubuflocal_remove __ARGS((buf_T *buf));
+int au_has_group __ARGS((char_u *name));
+void do_augroup __ARGS((char_u *arg, int del_group));
+void free_all_autocmds __ARGS((void));
+int check_ei __ARGS((void));
+char_u *au_event_disable __ARGS((char *what));
+void au_event_restore __ARGS((char_u *old_ei));
+void do_autocmd __ARGS((char_u *arg, int forceit));
+int do_doautocmd __ARGS((char_u *arg, int do_msg));
+void ex_doautoall __ARGS((exarg_T *eap));
+void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
+void aucmd_restbuf __ARGS((aco_save_T *aco));
+int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
+int apply_autocmds_retval __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf, int *retval));
+int has_cursorhold __ARGS((void));
+int trigger_cursorhold __ARGS((void));
+int has_cursormoved __ARGS((void));
+int has_cursormovedI __ARGS((void));
+int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
+char_u *get_augroup_name __ARGS((expand_T *xp, int idx));
+char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd));
+char_u *get_event_name __ARGS((expand_T *xp, int idx));
+int autocmd_supported __ARGS((char_u *name));
+int au_exists __ARGS((char_u *arg));
+int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
+int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
+char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
 /* vim: set ft=c : */
diff --git a/src/proto/ui.pro b/src/proto/ui.pro
index 593c1b9..8825b6a 100644
--- a/src/proto/ui.pro
+++ b/src/proto/ui.pro
@@ -1,61 +1,61 @@
 /* ui.c */
-extern void ui_write __ARGS((char_u *s, int len));
-extern void ui_inchar_undo __ARGS((char_u *s, int len));
-extern int ui_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
-extern int ui_char_avail __ARGS((void));
-extern void ui_delay __ARGS((long msec, int ignoreinput));
-extern void ui_suspend __ARGS((void));
-extern void suspend_shell __ARGS((void));
-extern int ui_get_shellsize __ARGS((void));
-extern void ui_set_shellsize __ARGS((int mustset));
-extern void ui_new_shellsize __ARGS((void));
-extern void ui_breakcheck __ARGS((void));
-extern void clip_init __ARGS((int can_use));
-extern void clip_update_selection __ARGS((void));
-extern void clip_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_lose_selection __ARGS((VimClipboard *cbd));
-extern void clip_copy_selection __ARGS((void));
-extern void clip_auto_select __ARGS((void));
-extern int clip_isautosel __ARGS((void));
-extern void clip_modeless __ARGS((int button, int is_click, int is_drag));
-extern void clip_start_selection __ARGS((int col, int row, int repeated_click));
-extern void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
-extern void clip_may_redraw_selection __ARGS((int row, int col, int len));
-extern void clip_clear_selection __ARGS((void));
-extern void clip_may_clear_selection __ARGS((int row1, int row2));
-extern void clip_scroll_selection __ARGS((int rows));
-extern void clip_copy_modeless_selection __ARGS((int both));
-extern int clip_gen_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_gen_lose_selection __ARGS((VimClipboard *cbd));
-extern void clip_gen_set_selection __ARGS((VimClipboard *cbd));
-extern void clip_gen_request_selection __ARGS((VimClipboard *cbd));
-extern int vim_is_input_buf_full __ARGS((void));
-extern int vim_is_input_buf_empty __ARGS((void));
-extern int vim_free_in_input_buf __ARGS((void));
-extern int vim_used_in_input_buf __ARGS((void));
-extern char_u *get_input_buf __ARGS((void));
-extern void set_input_buf __ARGS((char_u *p));
-extern void add_to_input_buf __ARGS((char_u *s, int len));
-extern void add_to_input_buf_csi __ARGS((char_u *str, int len));
-extern void push_raw_key __ARGS((char_u *s, int len));
-extern void trash_input_buf __ARGS((void));
-extern int read_from_input_buf __ARGS((char_u *buf, long maxlen));
-extern void fill_input_buf __ARGS((int exit_on_error));
-extern void read_error_exit __ARGS((void));
-extern void ui_cursor_shape __ARGS((void));
-extern int check_col __ARGS((int col));
-extern int check_row __ARGS((int row));
-extern void open_app_context __ARGS((void));
-extern void x11_setup_atoms __ARGS((Display *dpy));
-extern void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
-extern void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
-extern int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
-extern void clip_x11_set_selection __ARGS((VimClipboard *cbd));
-extern int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button));
-extern int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump));
-extern win_T *mouse_find_win __ARGS((int *rowp, int *colp));
-extern int get_fpos_of_mouse __ARGS((pos_T *mpos));
-extern int vcol2col __ARGS((win_T *wp, linenr_T lnum, int vcol));
-extern void ui_focus_change __ARGS((int in_focus));
-extern void im_save_status __ARGS((long *psave));
+void ui_write __ARGS((char_u *s, int len));
+void ui_inchar_undo __ARGS((char_u *s, int len));
+int ui_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+int ui_char_avail __ARGS((void));
+void ui_delay __ARGS((long msec, int ignoreinput));
+void ui_suspend __ARGS((void));
+void suspend_shell __ARGS((void));
+int ui_get_shellsize __ARGS((void));
+void ui_set_shellsize __ARGS((int mustset));
+void ui_new_shellsize __ARGS((void));
+void ui_breakcheck __ARGS((void));
+void clip_init __ARGS((int can_use));
+void clip_update_selection __ARGS((void));
+void clip_own_selection __ARGS((VimClipboard *cbd));
+void clip_lose_selection __ARGS((VimClipboard *cbd));
+void clip_copy_selection __ARGS((void));
+void clip_auto_select __ARGS((void));
+int clip_isautosel __ARGS((void));
+void clip_modeless __ARGS((int button, int is_click, int is_drag));
+void clip_start_selection __ARGS((int col, int row, int repeated_click));
+void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
+void clip_may_redraw_selection __ARGS((int row, int col, int len));
+void clip_clear_selection __ARGS((void));
+void clip_may_clear_selection __ARGS((int row1, int row2));
+void clip_scroll_selection __ARGS((int rows));
+void clip_copy_modeless_selection __ARGS((int both));
+int clip_gen_own_selection __ARGS((VimClipboard *cbd));
+void clip_gen_lose_selection __ARGS((VimClipboard *cbd));
+void clip_gen_set_selection __ARGS((VimClipboard *cbd));
+void clip_gen_request_selection __ARGS((VimClipboard *cbd));
+int vim_is_input_buf_full __ARGS((void));
+int vim_is_input_buf_empty __ARGS((void));
+int vim_free_in_input_buf __ARGS((void));
+int vim_used_in_input_buf __ARGS((void));
+char_u *get_input_buf __ARGS((void));
+void set_input_buf __ARGS((char_u *p));
+void add_to_input_buf __ARGS((char_u *s, int len));
+void add_to_input_buf_csi __ARGS((char_u *str, int len));
+void push_raw_key __ARGS((char_u *s, int len));
+void trash_input_buf __ARGS((void));
+int read_from_input_buf __ARGS((char_u *buf, long maxlen));
+void fill_input_buf __ARGS((int exit_on_error));
+void read_error_exit __ARGS((void));
+void ui_cursor_shape __ARGS((void));
+int check_col __ARGS((int col));
+int check_row __ARGS((int row));
+void open_app_context __ARGS((void));
+void x11_setup_atoms __ARGS((Display *dpy));
+void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
+void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
+int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
+void clip_x11_set_selection __ARGS((VimClipboard *cbd));
+int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button));
+int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump));
+win_T *mouse_find_win __ARGS((int *rowp, int *colp));
+int get_fpos_of_mouse __ARGS((pos_T *mpos));
+int vcol2col __ARGS((win_T *wp, linenr_T lnum, int vcol));
+void ui_focus_change __ARGS((int in_focus));
+void im_save_status __ARGS((long *psave));
 /* vim: set ft=c : */
