diff --git a/src/ex_getln.c b/src/ex_getln.c
index ff05804..90327d2 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -66,11 +66,11 @@
 		    /* identifying (unique) number of newest history entry */
 static int	hislen = 0;		/* actual length of history tables */
 
-static int	hist_char2type __ARGS((int c));
+static int	hist_char2type(int c);
 
-static int	in_history __ARGS((int, char_u *, int, int, int));
+static int	in_history(int, char_u *, int, int, int);
 # ifdef FEAT_EVAL
-static int	calc_hist_idx __ARGS((int histype, int num));
+static int	calc_hist_idx(int histype, int num);
 # endif
 #endif
 
@@ -82,50 +82,50 @@
 static int	cmd_fkmap = 0;	/* Farsi mapping during command line */
 #endif
 
-static int	cmdline_charsize __ARGS((int idx));
-static void	set_cmdspos __ARGS((void));
-static void	set_cmdspos_cursor __ARGS((void));
+static int	cmdline_charsize(int idx);
+static void	set_cmdspos(void);
+static void	set_cmdspos_cursor(void);
 #ifdef FEAT_MBYTE
-static void	correct_cmdspos __ARGS((int idx, int cells));
+static void	correct_cmdspos(int idx, int cells);
 #endif
-static void	alloc_cmdbuff __ARGS((int len));
-static int	realloc_cmdbuff __ARGS((int len));
-static void	draw_cmdline __ARGS((int start, int len));
-static void	save_cmdline __ARGS((struct cmdline_info *ccp));
-static void	restore_cmdline __ARGS((struct cmdline_info *ccp));
-static int	cmdline_paste __ARGS((int regname, int literally, int remcr));
+static void	alloc_cmdbuff(int len);
+static int	realloc_cmdbuff(int len);
+static void	draw_cmdline(int start, int len);
+static void	save_cmdline(struct cmdline_info *ccp);
+static void	restore_cmdline(struct cmdline_info *ccp);
+static int	cmdline_paste(int regname, int literally, int remcr);
 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
-static void	redrawcmd_preedit __ARGS((void));
+static void	redrawcmd_preedit(void);
 #endif
 #ifdef FEAT_WILDMENU
-static void	cmdline_del __ARGS((int from));
+static void	cmdline_del(int from);
 #endif
-static void	redrawcmdprompt __ARGS((void));
-static void	cursorcmd __ARGS((void));
-static int	ccheck_abbr __ARGS((int));
-static int	nextwild __ARGS((expand_T *xp, int type, int options, int escape));
-static void	escape_fname __ARGS((char_u **pp));
-static int	showmatches __ARGS((expand_T *xp, int wildmenu));
-static void	set_expand_context __ARGS((expand_T *xp));
-static int	ExpandFromContext __ARGS((expand_T *xp, char_u *, int *, char_u ***, int));
-static int	expand_showtail __ARGS((expand_T *xp));
+static void	redrawcmdprompt(void);
+static void	cursorcmd(void);
+static int	ccheck_abbr(int);
+static int	nextwild(expand_T *xp, int type, int options, int escape);
+static void	escape_fname(char_u **pp);
+static int	showmatches(expand_T *xp, int wildmenu);
+static void	set_expand_context(expand_T *xp);
+static int	ExpandFromContext(expand_T *xp, char_u *, int *, char_u ***, int);
+static int	expand_showtail(expand_T *xp);
 #ifdef FEAT_CMDL_COMPL
-static int	expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
-static int	ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
+static int	expand_shellcmd(char_u *filepat, int *num_file, char_u ***file, int flagsarg);
+static int	ExpandRTDir(char_u *pat, int *num_file, char_u ***file, char *dirname[]);
 # ifdef FEAT_CMDHIST
-static char_u	*get_history_arg __ARGS((expand_T *xp, int idx));
+static char_u	*get_history_arg(expand_T *xp, int idx);
 # endif
 # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
-static int	ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
-static int	ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+static int	ExpandUserDefined(expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file);
+static int	ExpandUserList(expand_T *xp, int *num_file, char_u ***file);
 # endif
 #endif
 #ifdef FEAT_CMDHIST
-static void	clear_hist_entry __ARGS((histentry_T *hisptr));
+static void	clear_hist_entry(histentry_T *hisptr);
 #endif
 
 #ifdef FEAT_CMDWIN
-static int	ex_window __ARGS((void));
+static int	ex_window(void);
 #endif
 
 #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
@@ -133,7 +133,7 @@
 #ifdef __BORLANDC__
 _RTLENTRYF
 #endif
-sort_func_compare __ARGS((const void *s1, const void *s2));
+sort_func_compare(const void *s1, const void *s2);
 #endif
 
 /*
@@ -4530,7 +4530,7 @@
 /*
  * Cleanup matches for help tags: remove "@en" if "en" is the only language.
  */
-static void	cleanup_help_tags __ARGS((int num_file, char_u **file));
+static void	cleanup_help_tags(int num_file, char_u **file);
 
     static void
 cleanup_help_tags(num_file, file)
@@ -5009,7 +5009,7 @@
 
 
 # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
-static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T	*xp, int *num_file, char_u ***file));
+static void * call_user_expand_func(void *(*user_expand_func)(char_u *, int, char_u **, int), expand_T	*xp, int *num_file, char_u ***file);
 
 /*
  * Call "user_expand_func()" to invoke a user defined VimL function and return
@@ -5017,7 +5017,7 @@
  */
     static void *
 call_user_expand_func(user_expand_func, xp, num_file, file)
-    void	*(*user_expand_func) __ARGS((char_u *, int, char_u **, int));
+    void	*(*user_expand_func)(char_u *, int, char_u **, int);
     expand_T	*xp;
     int		*num_file;
     char_u	***file;
@@ -5610,7 +5610,7 @@
     return history[histype][hisidx[histype]].hisnum;
 }
 
-static struct cmdline_info *get_ccline_ptr __ARGS((void));
+static struct cmdline_info *get_ccline_ptr(void);
 
 /*
  * Get pointer to the command line info to use. cmdline_paste() may clear
@@ -6066,7 +6066,7 @@
 static int	viminfo_hislen[HIST_COUNT] = {0, 0, 0, 0};
 static int	viminfo_add_at_front = FALSE;
 
-static int	hist_type2char __ARGS((int type, int use_question));
+static int	hist_type2char(int type, int use_question);
 
 /*
  * Translate a history type number to the associated character.
