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 : */
