diff --git a/src/Makefile b/src/Makefile
index 9883a77..29c8680 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1660,10 +1660,11 @@
 	hashtab.pro \
 	hangulin.pro \
 	if_cscope.pro \
-	if_xcmdsrv.pro \
+	if_lua.pro \
 	if_python.pro \
 	if_python3.pro \
 	if_ruby.pro \
+	if_xcmdsrv.pro \
 	json.pro \
 	main.pro \
 	mark.pro \
@@ -1680,6 +1681,7 @@
 	option.pro \
 	os_unix.pro \
 	popupmnu.pro \
+	pty.pro \
 	quickfix.pro \
 	regexp.pro \
 	screen.pro \
@@ -1997,6 +1999,7 @@
 	test_cursor_func \
 	test_delete \
 	test_expand \
+	test_glob2regpat \
 	test_hardcopy \
 	test_increment \
 	test_json \
diff --git a/src/blowfish.c b/src/blowfish.c
index 6bf2482..2191baf 100644
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -56,12 +56,12 @@
 } bf_state_T;
 
 
-static void bf_e_block __ARGS((bf_state_T *state, UINT32_T *p_xl, UINT32_T *p_xr));
-static void bf_e_cblock __ARGS((bf_state_T *state, char_u *block));
-static int bf_check_tables __ARGS((UINT32_T pax[18], UINT32_T sbx[4][256], UINT32_T val));
-static int bf_self_test __ARGS((void));
-static void bf_key_init __ARGS((bf_state_T *state, char_u *password, char_u *salt, int salt_len));
-static void bf_cfb_init __ARGS((bf_state_T *state, char_u *seed, int seed_len));
+static void bf_e_block(bf_state_T *state, UINT32_T *p_xl, UINT32_T *p_xr);
+static void bf_e_cblock(bf_state_T *state, char_u *block);
+static int bf_check_tables(UINT32_T pax[18], UINT32_T sbx[4][256], UINT32_T val);
+static int bf_self_test(void);
+static void bf_key_init(bf_state_T *state, char_u *password, char_u *salt, int salt_len);
+static void bf_cfb_init(bf_state_T *state, char_u *seed, int seed_len);
 
 /* Blowfish code */
 static UINT32_T pax_init[18] = {
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 78c0afa..89f84ed 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -85,7 +85,7 @@
 #ifdef DO_DECLARE_EXCMD
 # define EX(a, b, c, d, e)  {(char_u *)b, c, (long_u)(d), e}
 
-typedef void (*ex_func_T) __ARGS((exarg_T *eap));
+typedef void (*ex_func_T) (exarg_T *eap);
 
 static struct cmdname
 {
@@ -1739,7 +1739,7 @@
     int		useridx;	/* user command index */
 #endif
     char_u	*errmsg;	/* returned error message */
-    char_u	*(*getline) __ARGS((int, void *, int));
+    char_u	*(*getline)(int, void *, int);
     void	*cookie;	/* argument for getline() */
 #ifdef FEAT_EVAL
     struct condstack *cstack;	/* condition stack for ":if" etc. */
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 2c92096..67ec84b 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2999,7 +2999,7 @@
 do_in_runtimepath(name, all, callback, cookie)
     char_u	*name;
     int		all;
-    void	(*callback)__ARGS((char_u *fname, void *ck));
+    void	(*callback)(char_u *fname, void *ck);
     void	*cookie;
 {
     char_u	*rtp;
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 90327d2..6afe06f 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4709,7 +4709,7 @@
 	static struct expgen
 	{
 	    int		context;
-	    char_u	*((*func)__ARGS((expand_T *, int)));
+	    char_u	*((*func)(expand_T *, int));
 	    int		ic;
 	    int		escaped;
 	} tab[] =
@@ -4804,7 +4804,7 @@
     regmatch_T	*regmatch;
     int		*num_file;
     char_u	***file;
-    char_u	*((*func)__ARGS((expand_T *, int)));
+    char_u	*((*func)(expand_T *, int));
 					  /* returns a string from the list */
     int		escaped;
 {
diff --git a/src/fold.c b/src/fold.c
index b3e3a32..dcf96b9 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -2142,7 +2142,7 @@
 static int fold_changed;
 
 /* Function declarations. {{{2 */
-static linenr_T foldUpdateIEMSRecurse(garray_T *gap, int level, linenr_T startlnum, fline_T *flp, void (*getlevel)__ARGS((fline_T *)), linenr_T bot, int topflags);
+static linenr_T foldUpdateIEMSRecurse(garray_T *gap, int level, linenr_T startlnum, fline_T *flp, void (*getlevel)(fline_T *), linenr_T bot, int topflags);
 static int foldInsert(garray_T *gap, int i);
 static void foldSplit(garray_T *gap, int i, linenr_T top, linenr_T bot);
 static void foldRemove(garray_T *gap, linenr_T top, linenr_T bot);
@@ -2169,7 +2169,7 @@
     linenr_T	start;
     linenr_T	end;
     fline_T	fline;
-    void	(*getlevel)__ARGS((fline_T *));
+    void	(*getlevel)(fline_T *);
     int		level;
     fold_T	*fp;
 
@@ -2422,7 +2422,7 @@
     int		level;
     linenr_T	startlnum;
     fline_T	*flp;
-    void	(*getlevel)__ARGS((fline_T *));
+    void	(*getlevel)(fline_T *);
     linenr_T	bot;
     int		topflags;	/* flags used by containing fold */
 {
diff --git a/src/globals.h b/src/globals.h
index f252aee..103aff6 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -845,19 +845,19 @@
  * The value is set in mb_init();
  */
 /* length of char in bytes, including following composing chars */
-EXTERN int (*mb_ptr2len) __ARGS((char_u *p)) INIT(= latin_ptr2len);
+EXTERN int (*mb_ptr2len)(char_u *p) INIT(= latin_ptr2len);
 /* idem, with limit on string length */
-EXTERN int (*mb_ptr2len_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2len_len);
+EXTERN int (*mb_ptr2len_len)(char_u *p, int size) INIT(= latin_ptr2len_len);
 /* byte length of char */
-EXTERN int (*mb_char2len) __ARGS((int c)) INIT(= latin_char2len);
+EXTERN int (*mb_char2len)(int c) INIT(= latin_char2len);
 /* convert char to bytes, return the length */
-EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes);
-EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells);
-EXTERN int (*mb_ptr2cells_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2cells_len);
-EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells);
-EXTERN int (*mb_off2cells) __ARGS((unsigned off, unsigned max_off)) INIT(= latin_off2cells);
-EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char);
-EXTERN int (*mb_head_off) __ARGS((char_u *base, char_u *p)) INIT(= latin_head_off);
+EXTERN int (*mb_char2bytes)(int c, char_u *buf) INIT(= latin_char2bytes);
+EXTERN int (*mb_ptr2cells)(char_u *p) INIT(= latin_ptr2cells);
+EXTERN int (*mb_ptr2cells_len)(char_u *p, int size) INIT(= latin_ptr2cells_len);
+EXTERN int (*mb_char2cells)(int c) INIT(= latin_char2cells);
+EXTERN int (*mb_off2cells)(unsigned off, unsigned max_off) INIT(= latin_off2cells);
+EXTERN int (*mb_ptr2char)(char_u *p) INIT(= latin_ptr2char);
+EXTERN int (*mb_head_off)(char_u *base, char_u *p) INIT(= latin_head_off);
 
 # if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
 /* Pointers to functions and variables to be loaded at runtime */
diff --git a/src/gui_at_sb.h b/src/gui_at_sb.h
index 90940f5..bdce9c8 100644
--- a/src/gui_at_sb.h
+++ b/src/gui_at_sb.h
@@ -94,7 +94,7 @@
 
 extern WidgetClass vim_scrollbarWidgetClass;
 
-extern void vim_XawScrollbarSetThumb __ARGS((Widget, double, double, double));
+extern void vim_XawScrollbarSetThumb(Widget, double, double, double);
 
 typedef struct
 {
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 1aeb5c8..f177fff 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -195,7 +195,7 @@
 gui_mch_create_beval_area(target, mesg, mesgCB, clientData)
     void	*target;
     char_u	*mesg;
-    void	(*mesgCB)__ARGS((BalloonEval *, int));
+    void	(*mesgCB)(BalloonEval *, int);
     void	*clientData;
 {
 #ifndef FEAT_GUI_GTK
diff --git a/src/gui_beval.h b/src/gui_beval.h
index 75d5a18..859c081 100644
--- a/src/gui_beval.h
+++ b/src/gui_beval.h
@@ -60,7 +60,7 @@
 #endif
     int			ts;		/* tabstop setting for this buffer */
     char_u		*msg;
-    void		(*msgCB)__ARGS((struct BalloonEvalStruct *, int));
+    void		(*msgCB)(struct BalloonEvalStruct *, int);
     void		*clientData;	/* For callback */
 #if !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)
     Dimension		screen_width;	/* screen width in pixels */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index a774e30..5fce6e0 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -4931,7 +4931,7 @@
 gui_mch_create_beval_area(target, mesg, mesgCB, clientData)
     void	*target;	/* ignored, always use s_textArea */
     char_u	*mesg;
-    void	(*mesgCB)__ARGS((BalloonEval *, int));
+    void	(*mesgCB)(BalloonEval *, int);
     void	*clientData;
 {
     /* partially stolen from gui_beval.c */
diff --git a/src/if_cscope.h b/src/if_cscope.h
index 5620eb3..b597170 100644
--- a/src/if_cscope.h
+++ b/src/if_cscope.h
@@ -44,7 +44,7 @@
 
 typedef struct {
     char *  name;
-    int     (*func) __ARGS((exarg_T *eap));
+    int     (*func)(exarg_T *eap);
     char *  help;
     char *  usage;
     int	    cansplit;		/* if supports splitting window */
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 840de7d..f37f416 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -125,9 +125,9 @@
 /* Compatibility hacks over */
 
 static PerlInterpreter *perl_interp = NULL;
-static void xs_init __ARGS((pTHX));
-static void VIM_init __ARGS((void));
-EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
+static void xs_init(pTHX);
+static void VIM_init(void);
+EXTERN_C void boot_DynaLoader(pTHX_ CV*);
 
 /*
  * For dynamic linked perl.
@@ -1090,7 +1090,7 @@
 		    item2 = av_fetch((AV *)sv, size, 0);
 
 		    if (item2 == NULL || *item2 == NULL ||
-					perl_to_vim(*item2, &item->li_tv) == FAIL)
+				    perl_to_vim(*item2, &item->li_tv) == FAIL)
 			break;
 		}
 	    }
diff --git a/src/if_sniff.h b/src/if_sniff.h
index 16cce41..50186b8 100644
--- a/src/if_sniff.h
+++ b/src/if_sniff.h
@@ -9,8 +9,8 @@
 extern int  sniff_request_waiting;
 extern int  sniff_connected;
 extern int  fd_from_sniff;
-extern void sniff_disconnect __ARGS((int immediately));
-extern void ProcessSniffRequests __ARGS((void));
-extern void ex_sniff __ARGS((exarg_T *eap));
+extern void sniff_disconnect(int immediately);
+extern void ProcessSniffRequests(void);
+extern void ex_sniff(exarg_T *eap);
 
 #endif
diff --git a/src/nbdebug.h b/src/nbdebug.h
index 9510914..d049896 100644
--- a/src/nbdebug.h
+++ b/src/nbdebug.h
@@ -44,8 +44,8 @@
 
 void		 nbdbg(char *, ...);
 
-void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
-void nbdebug_log_init __ARGS((char *log_var, char *level_var));
+void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
+void nbdebug_log_init(char *log_var, char *level_var);
 
 extern FILE	*nb_debug;
 extern u_int	 nb_dlevel;		/* nb_debug verbosity level */
diff --git a/src/os_unix.c b/src/os_unix.c
index 93e7dd4..59aeddb 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -109,7 +109,7 @@
 
 static int sysmouse_open(void);
 static void sysmouse_close(void);
-static RETSIGTYPE sig_sysmouse __ARGS(SIGPROTOARG);
+static RETSIGTYPE sig_sysmouse SIGPROTOARG;
 #endif
 
 /*
@@ -190,22 +190,22 @@
 static void handle_resize(void);
 
 #if defined(SIGWINCH)
-static RETSIGTYPE sig_winch __ARGS(SIGPROTOARG);
+static RETSIGTYPE sig_winch SIGPROTOARG;
 #endif
 #if defined(SIGINT)
-static RETSIGTYPE catch_sigint __ARGS(SIGPROTOARG);
+static RETSIGTYPE catch_sigint SIGPROTOARG;
 #endif
 #if defined(SIGPWR)
-static RETSIGTYPE catch_sigpwr __ARGS(SIGPROTOARG);
+static RETSIGTYPE catch_sigpwr SIGPROTOARG;
 #endif
 #if defined(SIGALRM) && defined(FEAT_X11) \
 	&& defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
 # define SET_SIG_ALARM
-static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
+static RETSIGTYPE sig_alarm SIGPROTOARG;
 /* volatile because it is used in signal handler sig_alarm(). */
 static volatile int sig_alarm_called;
 #endif
-static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
+static RETSIGTYPE deathtrap SIGPROTOARG;
 
 static void catch_int_signal(void);
 static void set_signals(void);
@@ -1137,7 +1137,7 @@
  * volatile because it is used in signal handler sigcont_handler().
  */
 static volatile int sigcont_received;
-static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+static RETSIGTYPE sigcont_handler SIGPROTOARG;
 
 /*
  * signal handler for SIGCONT
@@ -6592,10 +6592,10 @@
 #endif /* FEAT_SYSMOUSE */
 
 #if defined(FEAT_LIBCALL) || defined(PROTO)
-typedef char_u * (*STRPROCSTR)__ARGS((char_u *));
-typedef char_u * (*INTPROCSTR)__ARGS((int));
-typedef int (*STRPROCINT)__ARGS((char_u *));
-typedef int (*INTPROCINT)__ARGS((int));
+typedef char_u * (*STRPROCSTR)(char_u *);
+typedef char_u * (*INTPROCSTR)(int);
+typedef int (*STRPROCINT)(char_u *);
+typedef int (*INTPROCINT)(int);
 
 /*
  * Call a DLL routine which takes either a string or int param
diff --git a/src/os_unix.h b/src/os_unix.h
index 4504cce..73881af 100644
--- a/src/os_unix.h
+++ b/src/os_unix.h
@@ -74,10 +74,6 @@
 # define USE_GETCWD
 #endif
 
-#ifndef __ARGS
-# define __ARGS(x) x
-#endif
-
 /* always use unlink() to remove files */
 #ifndef PROTO
 # ifdef VMS
@@ -453,7 +449,7 @@
 # ifdef HAVE_RENAME
 #  define mch_rename(src, dst) rename(src, dst)
 # else
-int mch_rename __ARGS((const char *src, const char *dest));
+int mch_rename(const char *src, const char *dest);
 # endif
 # ifndef VMS
 #  ifdef __MVS__
diff --git a/src/os_win16.c b/src/os_win16.c
index 49e6e30..efddeeb 100644
--- a/src/os_win16.c
+++ b/src/os_win16.c
@@ -84,7 +84,7 @@
 /* cproto doesn't create a prototype for main() */
 int _cdecl
 VimMain
-__ARGS((int argc, char **argv));
+    (int argc, char **argv);
 static int (_cdecl *pmain)(int, char **);
 
 #ifndef PROTO
diff --git a/src/proto.h b/src/proto.h
index 7a48dc9..63e1249 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -55,7 +55,7 @@
 #  include "winclip.pro"
 #  if (defined(__GNUC__) && !defined(__MINGW32__)) \
 	|| (defined(__BORLANDC__) && __BORLANDC__ < 0x502)
-extern int _stricoll __ARGS((char *a, char *b));
+extern int _stricoll(char *a, char *b);
 #  endif
 # endif
 # ifdef VMS
@@ -111,25 +111,25 @@
 #  ifdef __BORLANDC__
 _RTLENTRYF
 #  endif
-smsg __ARGS((char_u *, ...));
+smsg(char_u *, ...);
 
 int
 #  ifdef __BORLANDC__
 _RTLENTRYF
 #  endif
-smsg_attr __ARGS((int, char_u *, ...));
+smsg_attr(int, char_u *, ...);
 
 int
 #  ifdef __BORLANDC__
 _RTLENTRYF
 #  endif
-vim_snprintf_add __ARGS((char *, size_t, char *, ...));
+vim_snprintf_add(char *, size_t, char *, ...);
 
 int
 #  ifdef __BORLANDC__
 _RTLENTRYF
 #  endif
-vim_snprintf __ARGS((char *, size_t, char *, ...));
+vim_snprintf(char *, size_t, char *, ...);
 
 #  if defined(HAVE_STDARG_H)
 int vim_vsnprintf(char *str, size_t str_m, char *fmt, va_list ap, typval_T *tvs);
@@ -140,11 +140,11 @@
 # include "misc1.pro"
 # include "misc2.pro"
 #ifndef HAVE_STRPBRK	    /* not generated automatically from misc2.c */
-char_u *vim_strpbrk __ARGS((char_u *s, char_u *charset));
+char_u *vim_strpbrk(char_u *s, char_u *charset);
 #endif
 #ifndef HAVE_QSORT
 /* Use our own qsort(), don't define the prototype when not used. */
-void qsort __ARGS((void *base, size_t elm_count, size_t elm_size, int (*cmp)(const void *, const void *)));
+void qsort(void *base, size_t elm_count, size_t elm_size, int (*cmp)(const void *, const void *));
 #endif
 # include "move.pro"
 # if defined(FEAT_MBYTE) || defined(FEAT_XIM) || defined(FEAT_KEYMAP) \
@@ -219,9 +219,9 @@
 #   include "pty.pro"
 #  endif
 #  if !defined(HAVE_SETENV) && !defined(HAVE_PUTENV) && !defined(VMS)
-extern int putenv __ARGS((const char *string));		/* from pty.c */
+extern int putenv(const char *string);		/* from pty.c */
 #   ifdef USE_VIMPTY_GETENV
-extern char_u *vimpty_getenv __ARGS((const char_u *string));	/* from pty.c */
+extern char_u *vimpty_getenv(const char_u *string);	/* from pty.c */
 #   endif
 #  endif
 #  ifdef FEAT_GUI_W16
@@ -241,7 +241,7 @@
 #  ifdef FEAT_GUI_ATHENA
 #   include "gui_athena.pro"
 #   ifdef FEAT_BROWSE
-extern char *vim_SelFile __ARGS((Widget toplevel, char *prompt, char *init_path, int (*show_entry)(), int x, int y, guicolor_T fg, guicolor_T bg, guicolor_T scroll_fg, guicolor_T scroll_bg));
+extern char *vim_SelFile(Widget toplevel, char *prompt, char *init_path, int (*show_entry)(), int x, int y, guicolor_T fg, guicolor_T bg, guicolor_T scroll_fg, guicolor_T scroll_bg);
 #   endif
 #  endif
 #  ifdef FEAT_GUI_MAC
diff --git a/src/proto/if_lua.pro b/src/proto/if_lua.pro
index 10395d5..c33678e 100644
--- a/src/proto/if_lua.pro
+++ b/src/proto/if_lua.pro
@@ -1,11 +1,11 @@
 /* if_lua.c */
-int lua_enabled __ARGS((int verbose));
-void lua_end __ARGS((void));
-void ex_lua __ARGS((exarg_T *eap));
-void ex_luado __ARGS((exarg_T *eap));
-void ex_luafile __ARGS((exarg_T *eap));
-void lua_buffer_free __ARGS((buf_T *buf));
-void lua_window_free __ARGS((win_T *win));
-void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv));
-int set_ref_in_lua __ARGS((int copyID));
+int lua_enabled(int verbose);
+void lua_end(void);
+void ex_lua(exarg_T *eap);
+void ex_luado(exarg_T *eap);
+void ex_luafile(exarg_T *eap);
+void lua_buffer_free(buf_T *o);
+void lua_window_free(win_T *o);
+void do_luaeval(char_u *str, typval_T *arg, typval_T *rettv);
+int set_ref_in_lua(int copyID);
 /* vim: set ft=c : */
diff --git a/src/proto/pty.pro b/src/proto/pty.pro
index f2424a5..35e5c2b 100644
--- a/src/proto/pty.pro
+++ b/src/proto/pty.pro
@@ -1,3 +1,4 @@
 /* pty.c */
-int OpenPTY __ARGS((char **ttyn));
-int SetupSlavePTY __ARGS((int fd));
+int SetupSlavePTY(int fd);
+int OpenPTY(char **ttyn);
+/* vim: set ft=c : */
diff --git a/src/pty.c b/src/pty.c
index 0252093..8415057 100644
--- a/src/pty.c
+++ b/src/pty.c
@@ -228,7 +228,7 @@
 {
     int f;
     char *name;
-    RETSIGTYPE (*sigcld)__ARGS(SIGPROTOARG);
+    RETSIGTYPE (*sigcld) SIGPROTOARG;
 
     /*
      * SIGCHLD set to SIG_DFL for _getpty() because it may fork() and
diff --git a/src/regexp.c b/src/regexp.c
index 8ff30db..f954141 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -7226,12 +7226,6 @@
  *		      regsub stuff			       *
  ***************************************************************/
 
-/* This stuff below really confuses cc on an SGI -- webb */
-#ifdef __sgi
-# undef __ARGS
-# define __ARGS(x)  ()
-#endif
-
 /*
  * We should define ftpr as a pointer to a function returning a pointer to
  * a function returning a pointer to a function ...
diff --git a/src/structs.h b/src/structs.h
index 8c84b5a..43603aa 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2515,7 +2515,7 @@
     char_u	*actext;	    /* accelerator text (after TAB) */
     int		priority;	    /* Menu order priority */
 #ifdef FEAT_GUI
-    void	(*cb) __ARGS((vimmenu_T *));	    /* Call-back routine */
+    void	(*cb)(vimmenu_T *);	    /* Call-back routine */
 #endif
 #ifdef FEAT_TOOLBAR
     char_u	*iconfile;	    /* name of file for icon or NULL */
diff --git a/src/syntax.c b/src/syntax.c
index f86fae5..350539d 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6334,8 +6334,8 @@
 
 struct subcommand
 {
-    char    *name;				/* subcommand name */
-    void    (*func)__ARGS((exarg_T *, int));	/* function to call */
+    char    *name;			/* subcommand name */
+    void    (*func)(exarg_T *, int);	/* function to call */
 };
 
 static struct subcommand subcommands[] =
diff --git a/src/version.c b/src/version.c
index d941c94..d8cd6b3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1200,
+/**/
     1199,
 /**/
     1198,
diff --git a/src/vim.h b/src/vim.h
index b8de4ae..7fea749 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -274,15 +274,6 @@
 # include "os_unix.h"	    /* bring lots of system header files */
 #endif
 
-#ifndef __ARGS
-# define __ARGS(x) x
-#endif
-
-/* __ARGS and __PARMS are the same thing. */
-#ifndef __PARMS
-# define __PARMS(x) __ARGS(x)
-#endif
-
 /* Mark unused function arguments with UNUSED, so that gcc -Wunused-parameter
  * can be used to check for mistakes. */
 #ifdef HAVE_ATTRIBUTE_UNUSED
@@ -1641,7 +1632,7 @@
  * Include a prototype for mch_memmove(), it may not be in alloc.pro.
  */
 #ifdef VIM_MEMMOVE
-void mch_memmove __ARGS((void *, void *, size_t));
+void mch_memmove(void *, void *, size_t);
 #else
 # ifndef mch_memmove
 #  define mch_memmove(to, from, len) memmove(to, from, len)
@@ -1660,7 +1651,7 @@
 #ifdef HAVE_MEMSET
 # define vim_memset(ptr, c, size)   memset((ptr), (c), (size))
 #else
-void *vim_memset __ARGS((void *, int, size_t));
+void *vim_memset(void *, int, size_t);
 #endif
 
 #ifdef HAVE_MEMCMP
@@ -1669,7 +1660,7 @@
 # ifdef HAVE_BCMP
 #  define vim_memcmp(p1, p2, len)   bcmp((p1), (p2), (len))
 # else
-int vim_memcmp __ARGS((void *, void *, size_t));
+int vim_memcmp(void *, void *, size_t);
 #  define VIM_MEMCMP
 # endif
 #endif
diff --git a/src/xpm_w32.c b/src/xpm_w32.c
index 7241fb6..945ab7d 100644
--- a/src/xpm_w32.c
+++ b/src/xpm_w32.c
@@ -14,15 +14,6 @@
 #endif
 #include <windows.h>
 
-/* reduced def from Vim.h */
-#ifndef __ARGS
-# if defined(__STDC__) || defined(__GNUC__) || defined(WIN3264)
-#  define __ARGS(x) x
-# else
-#  define __ARGS(x) ()
-# endif
-#endif
-
 #include "xpm_w32.h"
 
 /* Engage Windows support in libXpm */
diff --git a/src/xpm_w32.h b/src/xpm_w32.h
index 3fe4475..914739b 100644
--- a/src/xpm_w32.h
+++ b/src/xpm_w32.h
@@ -3,5 +3,5 @@
  */
 
 #ifndef XPM_W32__H
-int LoadXpmImage __ARGS((char *filename, HBITMAP *hImage, HBITMAP *hShape));
+int LoadXpmImage(char *filename, HBITMAP *hImage, HBITMAP *hShape);
 #endif
