diff --git a/src/GvimExt/GvimExt.reg b/src/GvimExt/GvimExt.reg
index db49d24..604e911 100644
--- a/src/GvimExt/GvimExt.reg
+++ b/src/GvimExt/GvimExt.reg
@@ -15,6 +15,6 @@
 [HKEY_LOCAL_MACHINE\Software\Vim\Gvim]
    "path"="gvim.exe"
 
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0aa]
-   "DisplayName"="Vim 7.0aa: Edit with Vim popup menu entry"
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0b]
+   "DisplayName"="Vim 7.0b: Edit with Vim popup menu entry"
    "UninstallString"="uninstal.exe"
diff --git a/src/Make_bc3.mak b/src/Make_bc3.mak
index 20a9b1f..4617630 100644
--- a/src/Make_bc3.mak
+++ b/src/Make_bc3.mak
@@ -66,7 +66,7 @@
 	fold.obj \
 	getchar.obj \
 	hardcopy.obj \
-	hashtable.obj \
+	hashtab.obj \
 	main.obj \
 	mark.obj \
 	memfile.obj \
@@ -80,7 +80,7 @@
 	normal.obj \
 	ops.obj \
 	option.obj \
-	popupmenu.obj \
+	popupmnu.obj \
 	quickfix.obj \
 	regexp.obj \
 	screen.obj \
diff --git a/src/Make_bc5.mak b/src/Make_bc5.mak
index 3e1640e..b063ce0 100644
--- a/src/Make_bc5.mak
+++ b/src/Make_bc5.mak
@@ -547,7 +547,7 @@
 	$(OBJDIR)\fold.obj \
 	$(OBJDIR)\getchar.obj \
 	$(OBJDIR)\hardcopy.obj \
-	$(OBJDIR)\hashtable.obj \
+	$(OBJDIR)\hashtab.obj \
 	$(OBJDIR)\main.obj \
 	$(OBJDIR)\mark.obj \
 	$(OBJDIR)\memfile.obj \
@@ -561,7 +561,7 @@
 	$(OBJDIR)\normal.obj \
 	$(OBJDIR)\ops.obj \
 	$(OBJDIR)\option.obj \
-	$(OBJDIR)\popupmenu.obj \
+	$(OBJDIR)\popupmnu.obj \
 	$(OBJDIR)\quickfix.obj \
 	$(OBJDIR)\regexp.obj \
 	$(OBJDIR)\screen.obj \
diff --git a/src/Make_ivc.mak b/src/Make_ivc.mak
index f6b3694..2d118d5 100644
--- a/src/Make_ivc.mak
+++ b/src/Make_ivc.mak
@@ -225,7 +225,7 @@
 	"$(INTDIR)/fold.obj" \
 	"$(INTDIR)/getchar.obj" \
 	"$(INTDIR)/hardcopy.obj" \
-	"$(INTDIR)/hashtable.obj" \
+	"$(INTDIR)/hashtab.obj" \
 	"$(INTDIR)/main.obj" \
 	"$(INTDIR)/mark.obj" \
 	"$(INTDIR)/mbyte.obj" \
@@ -241,7 +241,7 @@
 	"$(INTDIR)/option.obj" \
 	"$(INTDIR)/os_mswin.obj" \
 	"$(INTDIR)/os_win32.obj" \
-	"$(INTDIR)/popupmenu.obj" \
+	"$(INTDIR)/popupmnu.obj" \
 	"$(INTDIR)/quickfix.obj" \
 	"$(INTDIR)/regexp.obj" \
 	"$(INTDIR)/screen.obj" \
@@ -384,7 +384,7 @@
 # End Source File
 # Begin Source File
 
-SOURCE=.\hashtable.c
+SOURCE=.\hashtab.c
 # End Source File
 # Begin Source File
 
@@ -598,7 +598,7 @@
 # End Source File
 # Begin Source File
 
-SOURCE=.\popupmenu.c
+SOURCE=.\popupmnu.c
 # End Source File
 # Begin Source File
 
diff --git a/src/Make_manx.mak b/src/Make_manx.mak
index 46c0015..b8e7852 100644
--- a/src/Make_manx.mak
+++ b/src/Make_manx.mak
@@ -49,7 +49,7 @@
 	fold.c \
 	getchar.c \
 	hardcopy.c \
-	hashtable.c \
+	hashtab.c \
 	main.c \
 	mark.c \
 	memfile.c \
@@ -64,7 +64,7 @@
 	ops.c \
 	option.c \
 	os_amiga.c \
-	popupmenu.c \
+	popupmnu.c \
 	quickfix.c \
 	regexp.c \
 	screen.c \
@@ -95,7 +95,7 @@
 	obj/fold.o \
 	obj/getchar.o \
 	obj/hardcopy.o \
-	obj/hashtable.o \
+	obj/hashtab.o \
 	obj/main.o \
 	obj/mark.o \
 	obj/memfile.o \
@@ -110,7 +110,7 @@
 	obj/ops.o \
 	obj/option.o \
 	obj/os_amiga.o \
-	obj/popupmenu.o \
+	obj/popupmnu.o \
 	obj/quickfix.o \
 	obj/regexp.o \
 	obj/screen.o \
@@ -139,7 +139,7 @@
 	proto/fold.pro \
 	proto/getchar.pro \
 	proto/hardcopy.pro \
-	proto/hashtable.pro \
+	proto/hashtab.pro \
 	proto/main.pro \
 	proto/mark.pro \
 	proto/memfile.pro \
@@ -154,7 +154,7 @@
 	proto/ops.pro \
 	proto/option.pro \
 	proto/os_amiga.pro \
-	proto/popupmenu.pro \
+	proto/popupmnu.pro \
 	proto/quickfix.pro \
 	proto/regexp.pro \
 	proto/screen.pro \
@@ -258,8 +258,8 @@
 obj/hardcopy.o:	hardcopy.c
 	$(CCSYM) $@ hardcopy.c
 
-obj/hashtable.o:	hashtable.c
-	$(CCSYM) $@ hashtable.c
+obj/hashtab.o:	hashtab.c
+	$(CCSYM) $@ hashtab.c
 
 # Don't use $(SYMS) here, because main.c defines EXTERN
 obj/main.o:	main.c option.h globals.h
@@ -306,8 +306,8 @@
 obj/os_amiga.o:	os_amiga.c
 	$(CCSYM) $@ os_amiga.c
 
-obj/popupmenu.o:	popupmenu.c
-	$(CCSYM) $@ popupmenu.c
+obj/popupmnu.o:	popupmnu.c
+	$(CCSYM) $@ popupmnu.c
 
 obj/quickfix.o:	quickfix.c
 	$(CCSYM) $@ quickfix.c
diff --git a/src/Make_ming.mak b/src/Make_ming.mak
index 7b601cc..e09ba8c 100644
--- a/src/Make_ming.mak
+++ b/src/Make_ming.mak
@@ -372,7 +372,7 @@
 	$(OUTDIR)/fold.o \
 	$(OUTDIR)/getchar.o \
 	$(OUTDIR)/hardcopy.o \
-	$(OUTDIR)/hashtable.o \
+	$(OUTDIR)/hashtab.o \
 	$(OUTDIR)/main.o \
 	$(OUTDIR)/mark.o \
 	$(OUTDIR)/memfile.o \
@@ -389,7 +389,7 @@
 	$(OUTDIR)/os_win32.o \
 	$(OUTDIR)/os_mswin.o \
 	$(OUTDIR)/pathdef.o \
-	$(OUTDIR)/popupmenu.o \
+	$(OUTDIR)/popupmnu.o \
 	$(OUTDIR)/quickfix.o \
 	$(OUTDIR)/regexp.o \
 	$(OUTDIR)/screen.o \
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index dbebbd7..9bb0487 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -390,7 +390,7 @@
 	$(OUTDIR)\fold.obj \
 	$(OUTDIR)\getchar.obj \
 	$(OUTDIR)\hardcopy.obj \
-	$(OUTDIR)\hashtable.obj \
+	$(OUTDIR)\hashtab.obj \
 	$(OUTDIR)\main.obj \
 	$(OUTDIR)\mark.obj \
 	$(OUTDIR)\mbyte.obj \
@@ -407,7 +407,7 @@
 	$(OUTDIR)\os_mswin.obj \
 	$(OUTDIR)\os_win32.obj \
 	$(OUTDIR)\pathdef.obj \
-	$(OUTDIR)\popupmenu.obj \
+	$(OUTDIR)\popupmnu.obj \
 	$(OUTDIR)\quickfix.obj \
 	$(OUTDIR)\regexp.obj \
 	$(OUTDIR)\screen.obj \
@@ -828,7 +828,7 @@
 
 $(OUTDIR)/hardcopy.obj:	$(OUTDIR) hardcopy.c  $(INCL)
 
-$(OUTDIR)/hashtable.obj:	$(OUTDIR) hashtable.c  $(INCL)
+$(OUTDIR)/hashtab.obj:	$(OUTDIR) hashtab.c  $(INCL)
 
 $(OUTDIR)/gui.obj:	$(OUTDIR) gui.c  $(INCL) $(GUI_INCL)
 
@@ -903,7 +903,7 @@
 $(OUTDIR)/pathdef.obj:	$(OUTDIR) $(PATHDEF_SRC) $(INCL)
 	$(CC) $(CFLAGS) $(PATHDEF_SRC)
 
-$(OUTDIR)/popupmenu.obj:	$(OUTDIR) popupmenu.c  $(INCL)
+$(OUTDIR)/popupmnu.obj:	$(OUTDIR) popupmnu.c  $(INCL)
 
 $(OUTDIR)/quickfix.obj:	$(OUTDIR) quickfix.c  $(INCL)
 
@@ -979,7 +979,7 @@
 	proto/fileio.pro \
 	proto/getchar.pro \
 	proto/hardcopy.pro \
-	proto/hashtable.pro \
+	proto/hashtab.pro \
 	proto/main.pro \
 	proto/mark.pro \
 	proto/memfile.pro \
@@ -995,7 +995,7 @@
 	proto/option.pro \
 	proto/os_mswin.pro \
 	proto/os_win32.pro \
-	proto/popupmenu.pro \
+	proto/popupmnu.pro \
 	proto/quickfix.pro \
 	proto/regexp.pro \
 	proto/screen.pro \
diff --git a/src/Make_os2.mak b/src/Make_os2.mak
index 1a64c11..e90f23e 100644
--- a/src/Make_os2.mak
+++ b/src/Make_os2.mak
@@ -54,7 +54,7 @@
 	fold.o \
 	getchar.o \
 	hardcopy.o \
-	hashtable.o \
+	hashtab.o \
 	main.o \
 	mark.o \
 	memfile.o \
@@ -68,7 +68,7 @@
 	normal.o \
 	ops.o \
 	option.o \
-	popupmenu.o \
+	popupmnu.o \
 	quickfix.o \
 	regexp.o \
 	screen.o \
@@ -127,7 +127,7 @@
 fold.o:		fold.c  $(INCL)
 getchar.o:	getchar.c  $(INCL)
 hardcopy.o:	hardcopy.c  $(INCL)
-hashtable.o:	hashtable.c  $(INCL)
+hashtab.o:	hashtab.c  $(INCL)
 main.o:		main.c  $(INCL)
 mark.o:		mark.c  $(INCL)
 memfile.o:	memfile.c  $(INCL)
@@ -141,7 +141,7 @@
 normal.o:	normal.c  $(INCL)
 ops.o:		ops.c  $(INCL)
 option.o:	option.c  $(INCL)
-popupmenu.o:	popupmenu.c  $(INCL)
+popupmnu.o:	popupmnu.c  $(INCL)
 quickfix.o:	quickfix.c  $(INCL)
 regexp.o:	regexp.c  $(INCL)
 screen.o:	screen.c  $(INCL)
diff --git a/src/Make_ro.mak b/src/Make_ro.mak
index 1577409..203a18a 100644
--- a/src/Make_ro.mak
+++ b/src/Make_ro.mak
@@ -13,9 +13,9 @@
 
 OBJS =  o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2  \
 	o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar \
-	o.hardcopy o.hashtable o.main o.mark o.mbyte  \
+	o.hardcopy o.hashtab o.main o.mark o.mbyte  \
 	o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move     \
-	o.normal o.ops o.option o.popupmenu o.quickfix o.regexp o.screen \
+	o.normal o.ops o.option o.popupmnu o.quickfix o.regexp o.screen \
 	o.search   \
 	o.spell o.syntax o.tag o.term o.termlib o.ui o.undo o.version	\
 	o.window o.os_riscos o.swis o.gui o.gui_riscos
@@ -69,7 +69,7 @@
 
 o.hardcopy:	c.hardcopy
 
-o.hashtable:	c.hashtable
+o.hashtab:	c.hashtab
 
 o.gui:		c.gui
 
@@ -105,7 +105,7 @@
 
 o.pty:		c.pty
 
-o.popupmenu:	c.popupmenu
+o.popupmnu:	c.popupmnu
 
 o.quickfix:	c.quickfix
 
diff --git a/src/Make_sas.mak b/src/Make_sas.mak
index 9caadd0..98ec528 100644
--- a/src/Make_sas.mak
+++ b/src/Make_sas.mak
@@ -104,7 +104,7 @@
 	fold.c \
 	getchar.c \
 	hardcopy.c \
-	hashtable.c \
+	hashtab.c \
 	main.c \
 	mark.c \
 	memfile.c \
@@ -119,7 +119,7 @@
 	ops.c \
 	option.c \
 	os_amiga.c \
-	popupmenu.c \
+	popupmnu.c \
 	quickfix.c \
 	regexp.c \
 	screen.c \
@@ -149,7 +149,7 @@
 	fold.o \
 	getchar.o \
 	hardcopy.o \
-	hashtable.o \
+	hashtab.o \
 	main.o \
 	mark.o \
 	memfile.o \
@@ -164,7 +164,7 @@
 	ops.o \
 	option.o \
 	os_amiga.o \
-	popupmenu.o \
+	popupmnu.o \
 	quickfix.o \
 	regexp.o \
 	screen.o \
@@ -194,7 +194,7 @@
 	proto/fold.pro \
 	proto/getchar.pro \
 	proto/hardcopy.pro \
-	proto/hashtable.pro \
+	proto/hashtab.pro \
 	proto/main.pro \
 	proto/mark.pro \
 	proto/memfile.pro \
@@ -209,7 +209,7 @@
 	proto/ops.pro \
 	proto/option.pro \
 	proto/os_amiga.pro \
-	proto/popupmenu.pro \
+	proto/popupmnu.pro \
 	proto/quickfix.pro \
 	proto/regexp.pro \
 	proto/screen.pro \
@@ -308,8 +308,8 @@
 proto/getchar.pro:	getchar.c
 hardcopy.o:		hardcopy.c
 proto/hardcopy.pro:	hardcopy.c
-hashtable.o:		hashtable.c
-proto/hashtable.pro:	hashtable.c
+hashtab.o:		hashtab.c
+proto/hashtab.pro:	hashtab.c
 main.o:			main.c
 proto/main.pro:		main.c
 mark.o:			mark.c
@@ -338,8 +338,8 @@
 proto/option.pro:	option.c
 os_amiga.o:		os_amiga.c
 proto/os_amiga.pro:	os_amiga.c
-popupmenu.o:		popupmenu.c
-proto/popupmenu.pro:	popupmenu.c
+popupmnu.o:		popupmnu.c
+proto/popupmnu.pro:	popupmnu.c
 quickfix.o:		quickfix.c
 proto/quickfix.pro:	quickfix.c
 regexp.o:		regexp.c
diff --git a/src/Makefile b/src/Makefile
index 4c415cb..86291b6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -304,7 +304,7 @@
 
 # examples (can only use one!):
 #CONF_ARGS = --exec-prefix=/usr
-#CONF_ARGS = --with-vim-name=vim6 --with-ex-name=ex6 --with-view-name=view6
+#CONF_ARGS = --with-vim-name=vim7 --with-ex-name=ex7 --with-view-name=view7
 #CONF_ARGS = --with-global-runtime=/etc/vim
 
 # Use this one if you distribute a modified version of Vim.
@@ -876,7 +876,7 @@
 
 ### Vim version (adjusted by a script)
 VIMMAJOR = 7
-VIMMINOR = 0aa
+VIMMINOR = 0b
 
 ### Location of Vim files (should not need to be changed, and  {{{1
 ### some things might not work when they are changed!)
@@ -1348,7 +1348,7 @@
 	fold.c \
 	getchar.c \
 	hardcopy.c \
-	hashtable.c \
+	hashtab.c \
 	if_cscope.c \
 	if_xcmdsrv.c \
 	main.c \
@@ -1366,7 +1366,7 @@
 	option.c \
 	os_unix.c \
 	auto/pathdef.c \
-	popupmenu.c \
+	popupmnu.c \
 	quickfix.c \
 	regexp.c \
 	screen.c \
@@ -1418,7 +1418,7 @@
 	objects/fold.o \
 	objects/getchar.o \
 	objects/hardcopy.o \
-	objects/hashtable.o \
+	objects/hashtab.o \
 	$(HANGULIN_OBJ) \
 	objects/if_cscope.o \
 	objects/if_xcmdsrv.o \
@@ -1437,7 +1437,7 @@
 	objects/option.o \
 	objects/os_unix.o \
 	objects/pathdef.o \
-	objects/popupmenu.o \
+	objects/popupmnu.o \
 	objects/quickfix.o \
 	objects/regexp.o \
 	objects/screen.o \
@@ -1477,7 +1477,7 @@
 	fold.pro \
 	getchar.pro \
 	hardcopy.pro \
-	hashtable.pro \
+	hashtab.pro \
 	hangulin.pro \
 	if_cscope.pro \
 	if_xcmdsrv.pro \
@@ -1497,7 +1497,7 @@
 	ops.pro \
 	option.pro \
 	os_unix.pro \
-	popupmenu.pro \
+	popupmnu.pro \
 	quickfix.pro \
 	regexp.pro \
 	screen.pro \
@@ -2298,8 +2298,8 @@
 objects/hardcopy.o: hardcopy.c
 	$(CCC) -o $@ hardcopy.c
 
-objects/hashtable.o: hashtable.c
-	$(CCC) -o $@ hashtable.c
+objects/hashtab.o: hashtab.c
+	$(CCC) -o $@ hashtab.c
 
 objects/gui.o: gui.c
 	$(CCC) -o $@ gui.c
@@ -2445,8 +2445,8 @@
 objects/pty.o: pty.c
 	$(CCC) -o $@ pty.c
 
-objects/popupmenu.o: popupmenu.c
-	$(CCC) -o $@ popupmenu.c
+objects/popupmnu.o: popupmnu.c
+	$(CCC) -o $@ popupmnu.c
 
 objects/quickfix.o: quickfix.c
 	$(CCC) -o $@ quickfix.c
@@ -2589,205 +2589,201 @@
 ### (automatically generated by 'make depend')
 ### Dependencies:
 objects/buffer.o: buffer.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/charset.o: charset.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/diff.o: diff.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/digraph.o: digraph.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/edit.o: edit.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/eval.o: eval.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/ex_cmds.o: ex_cmds.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/ex_cmds2.o: ex_cmds2.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h version.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h version.h
 objects/ex_docmd.o: ex_docmd.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/ex_eval.o: ex_eval.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/ex_getln.o: ex_getln.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/fileio.o: fileio.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/fold.o: fold.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/getchar.o: getchar.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/hardcopy.o: hardcopy.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h version.h
-objects/hashtable.o: hashtable.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h version.h
+objects/hashtab.o: hashtab.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/if_cscope.o: if_cscope.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h if_cscope.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h if_cscope.h
 objects/if_xcmdsrv.o: if_xcmdsrv.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h version.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h version.h
 objects/main.o: main.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h farsi.c arabic.c
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h farsi.c arabic.c
 objects/mark.o: mark.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/memfile.o: memfile.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/memline.o: memline.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/menu.o: menu.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/message.o: message.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/misc1.o: misc1.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/misc2.o: misc2.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/move.o: move.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/mbyte.o: mbyte.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/normal.o: normal.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/ops.o: ops.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
-  keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+  proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
 objects/option.o: option.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h os_unixx.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h os_unixx.h
 objects/pathdef.o: auto/pathdef.c ./vim.h ./auto/config.h ./feature.h ./os_unix.h \
-  ./auto/osdef.h ./ascii.h ./keymap.h ./term.h ./macros.h ./structs.h \
-  ./regexp.h ./gui.h ./gui_beval.h proto/gui_beval.pro ./option.h \
-  ./ex_cmds.h ./proto.h ./globals.h ./farsi.h ./arabic.h ./if_sniff.h
-objects/popupmenu.o: popupmenu.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  ./auto/osdef.h ./ascii.h ./keymap.h ./term.h ./macros.h ./option.h \
+  ./structs.h ./regexp.h ./gui.h ./gui_beval.h proto/gui_beval.pro \
+  ./ex_cmds.h ./proto.h ./globals.h ./farsi.h ./arabic.h
+objects/popupmnu.o: popupmnu.c vim.h auto/config.h feature.h os_unix.h \
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/quickfix.o: quickfix.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/regexp.o: regexp.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/screen.o: screen.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/search.o: search.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/spell.o: spell.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/syntax.o: syntax.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/tag.o: tag.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
-  keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+  proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
 objects/term.o: term.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/ui.o: ui.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
-  keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+  proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
 objects/undo.o: undo.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/version.o: version.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/window.o: window.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/gui.o: gui.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
-  keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+  proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
 objects/gui_gtk.o: gui_gtk.c gui_gtk_f.h vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h ../pixmaps/stock_icons.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h ../pixmaps/stock_icons.h
 objects/gui_gtk_f.o: gui_gtk_f.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_gtk_f.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_gtk_f.h
 objects/gui_motif.o: gui_motif.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_xmebw.h ../pixmaps/alert.xpm \
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_xmebw.h ../pixmaps/alert.xpm \
   ../pixmaps/error.xpm ../pixmaps/generic.xpm ../pixmaps/info.xpm \
   ../pixmaps/quest.xpm gui_x11_pm.h ../pixmaps/tb_new.xpm \
   ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm ../pixmaps/tb_save.xpm \
@@ -2806,17 +2802,17 @@
   ../pixmaps/tb_vsplit.xpm ../pixmaps/tb_maxwidth.xpm \
   ../pixmaps/tb_minwidth.xpm
 objects/gui_xmdlg.o: gui_xmdlg.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/gui_xmebw.o: gui_xmebw.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_xmebwp.h gui_xmebw.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_xmebwp.h gui_xmebw.h
 objects/gui_athena.o: gui_athena.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_at_sb.h gui_x11_pm.h \
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_at_sb.h gui_x11_pm.h \
   ../pixmaps/tb_new.xpm ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm \
   ../pixmaps/tb_save.xpm ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm \
   ../pixmaps/tb_copy.xpm ../pixmaps/tb_paste.xpm ../pixmaps/tb_find.xpm \
@@ -2833,69 +2829,72 @@
   ../pixmaps/tb_vsplit.xpm ../pixmaps/tb_maxwidth.xpm \
   ../pixmaps/tb_minwidth.xpm
 objects/gui_gtk_x11.o: gui_gtk_x11.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_gtk_f.h ../runtime/vim32x32.xpm \
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_gtk_f.h ../runtime/vim32x32.xpm \
   ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
 objects/gui_x11.o: gui_x11.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h ../runtime/vim32x32.xpm ../runtime/vim16x16.xpm \
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h ../runtime/vim32x32.xpm ../runtime/vim16x16.xpm \
   ../runtime/vim48x48.xpm
 objects/gui_at_sb.o: gui_at_sb.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_at_sb.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_at_sb.h
 objects/gui_at_fs.o: gui_at_fs.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h gui_at_sb.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h gui_at_sb.h
 objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
-  keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+  proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
 objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
+objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h if_mzsch.h
 objects/if_perl.o: auto/if_perl.c ./vim.h ./auto/config.h ./feature.h ./os_unix.h \
-  ./auto/osdef.h ./ascii.h ./keymap.h ./term.h ./macros.h ./structs.h \
-  ./regexp.h ./gui.h ./gui_beval.h proto/gui_beval.pro ./option.h \
-  ./ex_cmds.h ./proto.h ./globals.h ./farsi.h ./arabic.h ./if_sniff.h
+  ./auto/osdef.h ./ascii.h ./keymap.h ./term.h ./macros.h ./option.h \
+  ./structs.h ./regexp.h ./gui.h ./gui_beval.h proto/gui_beval.pro \
+  ./ex_cmds.h ./proto.h ./globals.h ./farsi.h ./arabic.h
 objects/if_perlsfio.o: if_perlsfio.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/if_python.o: if_python.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/if_tcl.o: if_tcl.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h
 objects/if_ruby.o: if_ruby.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-  proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_sniff.h version.h
+  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+  gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+  arabic.h version.h
 objects/if_sniff.o: if_sniff.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h os_unixx.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h os_unixx.h
 objects/gui_beval.o: gui_beval.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h
 objects/workshop.o: workshop.c auto/config.h integration.h vim.h feature.h \
-  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h structs.h \
-  regexp.h gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h \
-  proto.h globals.h farsi.h arabic.h if_sniff.h version.h workshop.h
+  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
+  structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h \
+  proto.h globals.h farsi.h arabic.h version.h workshop.h
 objects/wsdebug.o: wsdebug.c
 objects/integration.o: integration.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h integration.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h integration.h
 objects/netbeans.o: netbeans.c vim.h auto/config.h feature.h os_unix.h \
-  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-  gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-  farsi.h arabic.h if_sniff.h version.h
+  auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+  regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+  globals.h farsi.h arabic.h version.h
diff --git a/src/fileio.c b/src/fileio.c
index a5fdfb7..cf14c51 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1432,7 +1432,6 @@
 	    if (fio_flags & FIO_CODEPAGE)
 	    {
 		char_u	*src, *dst;
-		int	u8c;
 		WCHAR	ucs2buf[3];
 		int	ucs2len;
 		int	codepage = FIO_GET_CP(fio_flags);
@@ -1496,7 +1495,8 @@
 			}
 			else
 			{
-			    u8c = utf_ptr2char(src);
+			    int	    u8c = utf_ptr2char(src);
+
 			    if (u8c > 0xffff || (*src >= 0x80 && bytelen == 1))
 				found_bad = TRUE;
 			    ucs2buf[0] = u8c;
diff --git a/src/hashtab.c b/src/hashtab.c
new file mode 100644
index 0000000..e3306b3
--- /dev/null
+++ b/src/hashtab.c
@@ -0,0 +1,518 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+
+/*
+ * hashtab.c: Handling of a hashtable with Vim-specific properties.
+ *
+ * Each item in a hashtable has a NUL terminated string key.  A key can appear
+ * only once in the table.
+ *
+ * A hash number is computed from the key for quick lookup.  When the hashes
+ * of two different keys point to the same entry an algorithm is used to
+ * iterate over other entries in the table until the right one is found.
+ * To make the iteration work removed keys are different from entries where a
+ * key was never present.
+ *
+ * The mechanism has been partly based on how Python Dictionaries are
+ * implemented.  The algorithm is from Knuth Vol. 3, Sec. 6.4.
+ *
+ * The hashtable grows to accommodate more entries when needed.  At least 1/3
+ * of the entries is empty to keep the lookup efficient (at the cost of extra
+ * memory).
+ */
+
+#include "vim.h"
+
+#if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) || defined(PROTO)
+
+#if 0
+# define HT_DEBUG	/* extra checks for table consistency  and statistics */
+
+static long hash_count_lookup = 0;	/* count number of hashtab lookups */
+static long hash_count_perturb = 0;	/* count number of "misses" */
+#endif
+
+/* Magic value for algorithm that walks through the array. */
+#define PERTURB_SHIFT 5
+
+static int hash_may_resize __ARGS((hashtab_T *ht, int minitems));
+
+#if 0 /* currently not used */
+/*
+ * Create an empty hash table.
+ * Returns NULL when out of memory.
+ */
+    hashtab_T *
+hash_create()
+{
+    hashtab_T *ht;
+
+    ht = (hashtab_T *)alloc(sizeof(hashtab_T));
+    if (ht != NULL)
+	hash_init(ht);
+    return ht;
+}
+#endif
+
+/*
+ * Initialize an empty hash table.
+ */
+    void
+hash_init(ht)
+    hashtab_T *ht;
+{
+    /* This zeroes all "ht_" entries and all the "hi_key" in "ht_smallarray". */
+    vim_memset(ht, 0, sizeof(hashtab_T));
+    ht->ht_array = ht->ht_smallarray;
+    ht->ht_mask = HT_INIT_SIZE - 1;
+}
+
+/*
+ * Free the array of a hash table.  Does not free the items it contains!
+ * If "ht" is not freed then you should call hash_init() next!
+ */
+    void
+hash_clear(ht)
+    hashtab_T *ht;
+{
+    if (ht->ht_array != ht->ht_smallarray)
+	vim_free(ht->ht_array);
+}
+
+/*
+ * Free the array of a hash table and all the keys it contains.  The keys must
+ * have been allocated.  "off" is the offset from the start of the allocate
+ * memory to the location of the key (it's always positive).
+ */
+    void
+hash_clear_all(ht, off)
+    hashtab_T	*ht;
+    int		off;
+{
+    int		todo;
+    hashitem_T	*hi;
+
+    todo = ht->ht_used;
+    for (hi = ht->ht_array; todo > 0; ++hi)
+    {
+	if (!HASHITEM_EMPTY(hi))
+	{
+	    vim_free(hi->hi_key - off);
+	    --todo;
+	}
+    }
+    hash_clear(ht);
+}
+
+/*
+ * Find "key" in hashtable "ht".  "key" must not be NULL.
+ * Always returns a pointer to a hashitem.  If the item was not found then
+ * HASHITEM_EMPTY() is TRUE.  The pointer is then the place where the key
+ * would be added.
+ * WARNING: The returned pointer becomes invalid when the hashtable is changed
+ * (adding, setting or removing an item)!
+ */
+    hashitem_T *
+hash_find(ht, key)
+    hashtab_T	*ht;
+    char_u	*key;
+{
+    return hash_lookup(ht, key, hash_hash(key));
+}
+
+/*
+ * Like hash_find(), but caller computes "hash".
+ */
+    hashitem_T *
+hash_lookup(ht, key, hash)
+    hashtab_T	*ht;
+    char_u	*key;
+    hash_T	hash;
+{
+    hash_T	perturb;
+    hashitem_T	*freeitem;
+    hashitem_T	*hi;
+    int		idx;
+
+#ifdef HT_DEBUG
+    ++hash_count_lookup;
+#endif
+
+    /*
+     * Quickly handle the most common situations:
+     * - return if there is no item at all
+     * - skip over a removed item
+     * - return if the item matches
+     */
+    idx = hash & ht->ht_mask;
+    hi = &ht->ht_array[idx];
+
+    if (hi->hi_key == NULL)
+	return hi;
+    if (hi->hi_key == HI_KEY_REMOVED)
+	freeitem = hi;
+    else if (hi->hi_hash == hash && STRCMP(hi->hi_key, key) == 0)
+	return hi;
+    else
+	freeitem = NULL;
+
+    /*
+     * Need to search through the table to find the key.  The algorithm
+     * to step through the table starts with large steps, gradually becoming
+     * smaller down to (1/4 table size + 1).  This means it goes through all
+     * table entries in the end.
+     * When we run into a NULL key it's clear that the key isn't there.
+     * Return the first available slot found (can be a slot of a removed
+     * item).
+     */
+    for (perturb = hash; ; perturb >>= PERTURB_SHIFT)
+    {
+#ifdef HT_DEBUG
+	++hash_count_perturb;	    /* count a "miss" for hashtab lookup */
+#endif
+	idx = (idx << 2) + idx + perturb + 1;
+	hi = &ht->ht_array[idx & ht->ht_mask];
+	if (hi->hi_key == NULL)
+	    return freeitem == NULL ? hi : freeitem;
+	if (hi->hi_hash == hash
+		&& hi->hi_key != HI_KEY_REMOVED
+		&& STRCMP(hi->hi_key, key) == 0)
+	    return hi;
+	if (hi->hi_key == HI_KEY_REMOVED && freeitem == NULL)
+	    freeitem = hi;
+    }
+}
+
+/*
+ * Print the efficiency of hashtable lookups.
+ * Useful when trying different hash algorithms.
+ * Called when exiting.
+ */
+    void
+hash_debug_results()
+{
+#ifdef HT_DEBUG
+    fprintf(stderr, "\r\n\r\n\r\n\r\n");
+    fprintf(stderr, "Number of hashtable lookups: %ld\r\n", hash_count_lookup);
+    fprintf(stderr, "Number of perturb loops: %ld\r\n", hash_count_perturb);
+    fprintf(stderr, "Percentage of perturb loops: %ld%%\r\n",
+				hash_count_perturb * 100 / hash_count_lookup);
+#endif
+}
+
+/*
+ * Add item with key "key" to hashtable "ht".
+ * Returns FAIL when out of memory or the key is already present.
+ */
+    int
+hash_add(ht, key)
+    hashtab_T	*ht;
+    char_u	*key;
+{
+    hash_T	hash = hash_hash(key);
+    hashitem_T	*hi;
+
+    hi = hash_lookup(ht, key, hash);
+    if (!HASHITEM_EMPTY(hi))
+    {
+	EMSG2(_(e_intern2), "hash_add()");
+	return FAIL;
+    }
+    return hash_add_item(ht, hi, key, hash);
+}
+
+/*
+ * Add item "hi" with "key" to hashtable "ht".  "key" must not be NULL and
+ * "hi" must have been obtained with hash_lookup() and point to an empty item.
+ * "hi" is invalid after this!
+ * Returns OK or FAIL (out of memory).
+ */
+    int
+hash_add_item(ht, hi, key, hash)
+    hashtab_T	*ht;
+    hashitem_T	*hi;
+    char_u	*key;
+    hash_T	hash;
+{
+    /* If resizing failed before and it fails again we can't add an item. */
+    if (ht->ht_error && hash_may_resize(ht, 0) == FAIL)
+	return FAIL;
+
+    ++ht->ht_used;
+    if (hi->hi_key == NULL)
+	++ht->ht_filled;
+    hi->hi_key = key;
+    hi->hi_hash = hash;
+
+    /* When the space gets low may resize the array. */
+    return hash_may_resize(ht, 0);
+}
+
+#if 0  /* not used */
+/*
+ * Overwrite hashtable item "hi" with "key".  "hi" must point to the item that
+ * is to be overwritten.  Thus the number of items in the hashtable doesn't
+ * change.
+ * Although the key must be identical, the pointer may be different, thus it's
+ * set anyway (the key is part of an item with that key).
+ * The caller must take care of freeing the old item.
+ * "hi" is invalid after this!
+ */
+    void
+hash_set(hi, key)
+    hashitem_T	*hi;
+    char_u	*key;
+{
+    hi->hi_key = key;
+}
+#endif
+
+/*
+ * Remove item "hi" from  hashtable "ht".  "hi" must have been obtained with
+ * hash_lookup().
+ * The caller must take care of freeing the item itself.
+ */
+    void
+hash_remove(ht, hi)
+    hashtab_T	*ht;
+    hashitem_T	*hi;
+{
+    --ht->ht_used;
+    hi->hi_key = HI_KEY_REMOVED;
+    hash_may_resize(ht, 0);
+}
+
+/*
+ * Lock a hashtable: prevent that ht_array changes.
+ * Don't use this when items are to be added!
+ * Must call hash_unlock() later.
+ */
+    void
+hash_lock(ht)
+    hashtab_T	*ht;
+{
+    ++ht->ht_locked;
+}
+
+#if 0	    /* currently not used */
+/*
+ * Lock a hashtable at the specified number of entries.
+ * Caller must make sure no more than "size" entries will be added.
+ * Must call hash_unlock() later.
+ */
+    void
+hash_lock_size(ht, size)
+    hashtab_T	*ht;
+    int		size;
+{
+    (void)hash_may_resize(ht, size);
+    ++ht->ht_locked;
+}
+#endif
+
+/*
+ * Unlock a hashtable: allow ht_array changes again.
+ * Table will be resized (shrink) when necessary.
+ * This must balance a call to hash_lock().
+ */
+    void
+hash_unlock(ht)
+    hashtab_T	*ht;
+{
+    --ht->ht_locked;
+    (void)hash_may_resize(ht, 0);
+}
+
+/*
+ * Shrink a hashtable when there is too much empty space.
+ * Grow a hashtable when there is not enough empty space.
+ * Returns OK or FAIL (out of memory).
+ */
+    static int
+hash_may_resize(ht, minitems)
+    hashtab_T	*ht;
+    int		minitems;		/* minimal number of items */
+{
+    hashitem_T	temparray[HT_INIT_SIZE];
+    hashitem_T	*oldarray, *newarray;
+    hashitem_T	*olditem, *newitem;
+    int		newi;
+    int		todo;
+    long_u	oldsize, newsize;
+    long_u	minsize;
+    long_u	newmask;
+    hash_T	perturb;
+
+    /* Don't resize a locked table. */
+    if (ht->ht_locked > 0)
+	return OK;
+
+#ifdef HT_DEBUG
+    if (ht->ht_used > ht->ht_filled)
+	EMSG("hash_may_resize(): more used than filled");
+    if (ht->ht_filled >= ht->ht_mask + 1)
+	EMSG("hash_may_resize(): table completely filled");
+#endif
+
+    if (minitems == 0)
+    {
+	/* Return quickly for small tables with at least two NULL items.  NULL
+	 * items are required for the lookup to decide a key isn't there. */
+	if (ht->ht_filled < HT_INIT_SIZE - 1
+					 && ht->ht_array == ht->ht_smallarray)
+	    return OK;
+
+	/*
+	 * Grow or refill the array when it's more than 2/3 full (including
+	 * removed items, so that they get cleaned up).
+	 * Shrink the array when it's less than 1/5 full.  When growing it is
+	 * at least 1/4 full (avoids repeated grow-shrink operations)
+	 */
+	oldsize = ht->ht_mask + 1;
+	if (ht->ht_filled * 3 < oldsize * 2 && ht->ht_used > oldsize / 5)
+	    return OK;
+
+	if (ht->ht_used > 1000)
+	    minsize = ht->ht_used * 2;  /* it's big, don't make too much room */
+	else
+	    minsize = ht->ht_used * 4;  /* make plenty of room */
+    }
+    else
+    {
+	/* Use specified size. */
+	if ((long_u)minitems < ht->ht_used)	/* just in case... */
+	    minitems = ht->ht_used;
+	minsize = minitems * 3 / 2;	/* array is up to 2/3 full */
+    }
+
+    newsize = HT_INIT_SIZE;
+    while (newsize < minsize)
+    {
+	newsize <<= 1;		/* make sure it's always a power of 2 */
+	if (newsize == 0)
+	    return FAIL;	/* overflow */
+    }
+
+    if (newsize == HT_INIT_SIZE)
+    {
+	/* Use the small array inside the hashdict structure. */
+	newarray = ht->ht_smallarray;
+	if (ht->ht_array == newarray)
+	{
+	    /* Moving from ht_smallarray to ht_smallarray!  Happens when there
+	     * are many removed items.  Copy the items to be able to clean up
+	     * removed items. */
+	    mch_memmove(temparray, newarray, sizeof(temparray));
+	    oldarray = temparray;
+	}
+	else
+	    oldarray = ht->ht_array;
+    }
+    else
+    {
+	/* Allocate an array. */
+	newarray = (hashitem_T *)alloc((unsigned)
+					      (sizeof(hashitem_T) * newsize));
+	if (newarray == NULL)
+	{
+	    /* Out of memory.  When there are NULL items still return OK.
+	     * Otherwise set ht_error, because lookup may result in a hang if
+	     * we add another item. */
+	    if (ht->ht_filled < ht->ht_mask)
+		return OK;
+	    ht->ht_error = TRUE;
+	    return FAIL;
+	}
+	oldarray = ht->ht_array;
+    }
+    vim_memset(newarray, 0, (size_t)(sizeof(hashitem_T) * newsize));
+
+    /*
+     * Move all the items from the old array to the new one, placing them in
+     * the right spot.  The new array won't have any removed items, thus this
+     * is also a cleanup action.
+     */
+    newmask = newsize - 1;
+    todo = ht->ht_used;
+    for (olditem = oldarray; todo > 0; ++olditem)
+	if (!HASHITEM_EMPTY(olditem))
+	{
+	    /*
+	     * The algorithm to find the spot to add the item is identical to
+	     * the algorithm to find an item in hash_lookup().  But we only
+	     * need to search for a NULL key, thus it's simpler.
+	     */
+	    newi = olditem->hi_hash & newmask;
+	    newitem = &newarray[newi];
+
+	    if (newitem->hi_key != NULL)
+		for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT)
+		{
+		    newi = (newi << 2) + newi + perturb + 1;
+		    newitem = &newarray[newi & newmask];
+		    if (newitem->hi_key == NULL)
+			break;
+		}
+	    *newitem = *olditem;
+	    --todo;
+	}
+
+    if (ht->ht_array != ht->ht_smallarray)
+	vim_free(ht->ht_array);
+    ht->ht_array = newarray;
+    ht->ht_mask = newmask;
+    ht->ht_filled = ht->ht_used;
+    ht->ht_error = FALSE;
+
+    return OK;
+}
+
+/*
+ * Get the hash number for a key.
+ * If you think you know a better hash function: Compile with HT_DEBUG set and
+ * run a script that uses hashtables a lot.  Vim will then print statistics
+ * when exiting.  Try that with the current hash algorithm and yours.  The
+ * lower the percentage the better.
+ */
+    hash_T
+hash_hash(key)
+    char_u	*key;
+{
+    hash_T	hash;
+    char_u	*p;
+
+    if ((hash = *key) == 0)
+	return (hash_T)0;	/* Empty keys are not allowed, but we don't
+				   want to crash if we get one. */
+    p = key + 1;
+
+#if 0
+    /* ElfHash algorithm, which is supposed to have an even distribution.
+     * Suggested by Charles Campbell. */
+    hash_T	g;
+
+    while (*p != NUL)
+    {
+	hash = (hash << 4) + *p++;	/* clear low 4 bits of hash, add char */
+	g = hash & 0xf0000000L;		/* g has high 4 bits of hash only */
+	if (g != 0)
+	    hash ^= g >> 24;		/* xor g's high 4 bits into hash */
+    }
+#else
+
+    /* A simplistic algorithm that appears to do very well.
+     * Suggested by George Reilly. */
+    while (*p != NUL)
+	hash = hash * 101 + *p++;
+#endif
+
+    return hash;
+}
+
+#endif
diff --git a/src/message.c b/src/message.c
index e0971b6..d25d485 100644
--- a/src/message.c
+++ b/src/message.c
@@ -4167,8 +4167,8 @@
 		    {
 			/* memchr on HP does not like n > 2^31  !!! */
 			char *q = memchr(str_arg, '\0',
-				precision <= 0x7fffffff ? precision
-								: 0x7fffffff);
+				precision <= (size_t)0x7fffffffL ? precision
+						       : (size_t)0x7fffffffL);
 			str_arg_l = (q == NULL) ? precision : q - str_arg;
 		    }
 		    break;
diff --git a/src/os_msdos.c b/src/os_msdos.c
index 84341ed..dee6d91 100644
--- a/src/os_msdos.c
+++ b/src/os_msdos.c
@@ -711,9 +711,7 @@
     static  int
 WaitForChar(long msec)
 {
-    union REGS	regs;
     long	starttime = 0;
-    int		x, y;
 
     if (msec != 0)
 	starttime = biostime(0, 0L);
@@ -723,6 +721,8 @@
 #ifdef FEAT_MOUSE
 	long		clicktime;
 	static int	old_status = 0;
+	union REGS	regs;
+	int		x, y;
 
 	if (mouse_avail && mouse_active && mouse_click < 0)
 	{
diff --git a/src/os_msdos.h b/src/os_msdos.h
index b8e90e1..49420a8 100644
--- a/src/os_msdos.h
+++ b/src/os_msdos.h
@@ -21,6 +21,7 @@
 # define USE_LONG_FNAME _USE_LFN    /* decide at run time */
 # define USE_FNAME_CASE
 # define HAVE_PUTENV
+# define HAVE_STDARG_H
 #else
 # define SHORT_FNAME		/* always 8.3 file name */
 #endif
diff --git a/src/proto.h b/src/proto.h
index 5191e75..85f4937 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -90,7 +90,7 @@
 #  include "hangulin.pro"
 # endif
 # include "hardcopy.pro"
-# include "hashtable.pro"
+# include "hashtab.pro"
 # include "main.pro"
 # include "mark.pro"
 # include "memfile.pro"
@@ -140,8 +140,10 @@
 # include "normal.pro"
 # include "ops.pro"
 # include "option.pro"
-# include "popupmenu.pro"
-# include "quickfix.pro"
+# include "popupmnu.pro"
+# ifdef FEAT_QUICKFIX
+#  include "quickfix.pro"
+# endif
 # include "regexp.pro"
 # include "screen.pro"
 # include "search.pro"
diff --git a/src/proto/buffer.pro b/src/proto/buffer.pro
index 9193443..9da8c3e 100644
--- a/src/proto/buffer.pro
+++ b/src/proto/buffer.pro
@@ -1,69 +1,69 @@
 /* buffer.c */
-int open_buffer __ARGS((int read_stdin, exarg_T *eap));
-int buf_valid __ARGS((buf_T *buf));
-void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
-void buf_clear_file __ARGS((buf_T *buf));
-void buf_freeall __ARGS((buf_T *buf, int del_buf, int wipe_buf));
-void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
-void handle_swap_exists __ARGS((buf_T *old_curbuf));
-char_u *do_bufdel __ARGS((int command, char_u *arg, int addr_count, int start_bnr, int end_bnr, int forceit));
-int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
-void set_curbuf __ARGS((buf_T *buf, int action));
-void enter_buffer __ARGS((buf_T *buf));
-buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int flags));
-void free_buf_options __ARGS((buf_T *buf, int free_p_ff));
-int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit));
-void buflist_getfpos __ARGS((void));
-buf_T *buflist_findname_exp __ARGS((char_u *fname));
-buf_T *buflist_findname __ARGS((char_u *ffname));
-int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
-int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
-buf_T *buflist_findnr __ARGS((int nr));
-char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
-void get_winopts __ARGS((buf_T *buf));
-pos_T *buflist_findfpos __ARGS((buf_T *buf));
-linenr_T buflist_findlnum __ARGS((buf_T *buf));
-void buflist_list __ARGS((exarg_T *eap));
-int buflist_name_nr __ARGS((int fnum, char_u **fname, linenr_T *lnum));
-int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int message));
-void buf_set_name __ARGS((int fnum, char_u *name));
-void buf_name_changed __ARGS((buf_T *buf));
-buf_T *setaltfname __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum));
-char_u *getaltfname __ARGS((int errmsg));
-int buflist_add __ARGS((char_u *fname, int flags));
-void buflist_slash_adjust __ARGS((void));
-void buflist_altfpos __ARGS((void));
-int otherfile __ARGS((char_u *ffname));
-void buf_setino __ARGS((buf_T *buf));
-void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
-void col_print __ARGS((char_u *buf, int col, int vcol));
-void maketitle __ARGS((void));
-void resettitle __ARGS((void));
-void free_titles __ARGS((void));
-int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
-void get_rel_pos __ARGS((win_T *wp, char_u *str));
-int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
-char_u *fix_fname __ARGS((char_u *fname));
-void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
-char_u *alist_name __ARGS((aentry_T *aep));
-void do_arg_all __ARGS((int count, int forceit, int keep_tabs));
-void ex_buffer_all __ARGS((exarg_T *eap));
-void do_modelines __ARGS((int flags));
-int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing));
-void write_viminfo_bufferlist __ARGS((FILE *fp));
-char *buf_spname __ARGS((buf_T *buf));
-void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
-int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
-int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
-linenr_T buf_delsign __ARGS((buf_T *buf, int id));
-int buf_findsign __ARGS((buf_T *buf, int id));
-int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
-int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
-int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
-void buf_delete_all_signs __ARGS((void));
-void sign_list_placed __ARGS((buf_T *rbuf));
-void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-void set_buflisted __ARGS((int on));
-int buf_contents_changed __ARGS((buf_T *buf));
-void wipe_buffer __ARGS((buf_T *buf, int aucmd));
+extern int open_buffer __ARGS((int read_stdin, exarg_T *eap));
+extern int buf_valid __ARGS((buf_T *buf));
+extern void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
+extern void buf_clear_file __ARGS((buf_T *buf));
+extern void buf_freeall __ARGS((buf_T *buf, int del_buf, int wipe_buf));
+extern void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+extern void handle_swap_exists __ARGS((buf_T *old_curbuf));
+extern char_u *do_bufdel __ARGS((int command, char_u *arg, int addr_count, int start_bnr, int end_bnr, int forceit));
+extern int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
+extern void set_curbuf __ARGS((buf_T *buf, int action));
+extern void enter_buffer __ARGS((buf_T *buf));
+extern buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int flags));
+extern void free_buf_options __ARGS((buf_T *buf, int free_p_ff));
+extern int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit));
+extern void buflist_getfpos __ARGS((void));
+extern buf_T *buflist_findname_exp __ARGS((char_u *fname));
+extern buf_T *buflist_findname __ARGS((char_u *ffname));
+extern int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
+extern int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
+extern buf_T *buflist_findnr __ARGS((int nr));
+extern char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
+extern void get_winopts __ARGS((buf_T *buf));
+extern pos_T *buflist_findfpos __ARGS((buf_T *buf));
+extern linenr_T buflist_findlnum __ARGS((buf_T *buf));
+extern void buflist_list __ARGS((exarg_T *eap));
+extern int buflist_name_nr __ARGS((int fnum, char_u **fname, linenr_T *lnum));
+extern int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int message));
+extern void buf_set_name __ARGS((int fnum, char_u *name));
+extern void buf_name_changed __ARGS((buf_T *buf));
+extern buf_T *setaltfname __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum));
+extern char_u *getaltfname __ARGS((int errmsg));
+extern int buflist_add __ARGS((char_u *fname, int flags));
+extern void buflist_slash_adjust __ARGS((void));
+extern void buflist_altfpos __ARGS((void));
+extern int otherfile __ARGS((char_u *ffname));
+extern void buf_setino __ARGS((buf_T *buf));
+extern void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+extern void col_print __ARGS((char_u *buf, int col, int vcol));
+extern void maketitle __ARGS((void));
+extern void resettitle __ARGS((void));
+extern void free_titles __ARGS((void));
+extern int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
+extern void get_rel_pos __ARGS((win_T *wp, char_u *str));
+extern int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
+extern char_u *fix_fname __ARGS((char_u *fname));
+extern void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
+extern char_u *alist_name __ARGS((aentry_T *aep));
+extern void do_arg_all __ARGS((int count, int forceit, int keep_tabs));
+extern void ex_buffer_all __ARGS((exarg_T *eap));
+extern void do_modelines __ARGS((int flags));
+extern int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing));
+extern void write_viminfo_bufferlist __ARGS((FILE *fp));
+extern char *buf_spname __ARGS((buf_T *buf));
+extern void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
+extern int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
+extern int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
+extern linenr_T buf_delsign __ARGS((buf_T *buf, int id));
+extern int buf_findsign __ARGS((buf_T *buf, int id));
+extern int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
+extern int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
+extern int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
+extern void buf_delete_all_signs __ARGS((void));
+extern void sign_list_placed __ARGS((buf_T *rbuf));
+extern void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern void set_buflisted __ARGS((int on));
+extern int buf_contents_changed __ARGS((buf_T *buf));
+extern void wipe_buffer __ARGS((buf_T *buf, int aucmd));
 /* vim: set ft=c : */
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index 4b6890d..a6f4802 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -1,56 +1,56 @@
 /* charset.c */
-int init_chartab __ARGS((void));
-int buf_init_chartab __ARGS((buf_T *buf, int global));
-void trans_characters __ARGS((char_u *buf, int bufsize));
-char_u *transstr __ARGS((char_u *s));
-char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
-char_u *transchar __ARGS((int c));
-char_u *transchar_byte __ARGS((int c));
-void transchar_nonprint __ARGS((char_u *buf, int c));
-void transchar_hex __ARGS((char_u *buf, int c));
-int byte2cells __ARGS((int b));
-int char2cells __ARGS((int c));
-int ptr2cells __ARGS((char_u *p));
-int vim_strsize __ARGS((char_u *s));
-int vim_strnsize __ARGS((char_u *s, int len));
-int chartabsize __ARGS((char_u *p, colnr_T col));
-int linetabsize __ARGS((char_u *s));
-int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
-int vim_isIDc __ARGS((int c));
-int vim_iswordc __ARGS((int c));
-int vim_iswordp __ARGS((char_u *p));
-int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
-int vim_isfilec __ARGS((int c));
-int vim_isprintc __ARGS((int c));
-int vim_isprintc_strict __ARGS((int c));
-int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
-int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
-int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
-int in_win_border __ARGS((win_T *wp, colnr_T vcol));
-void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-colnr_T getvcol_nolist __ARGS((pos_T *posp));
-void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
-char_u *skipwhite __ARGS((char_u *p));
-char_u *skipdigits __ARGS((char_u *p));
-char_u *skiphex __ARGS((char_u *p));
-char_u *skiptodigit __ARGS((char_u *p));
-char_u *skiptohex __ARGS((char_u *p));
-int vim_isdigit __ARGS((int c));
-int vim_isxdigit __ARGS((int c));
-int vim_islower __ARGS((int c));
-int vim_isupper __ARGS((int c));
-int vim_toupper __ARGS((int c));
-int vim_tolower __ARGS((int c));
-char_u *skiptowhite __ARGS((char_u *p));
-char_u *skiptowhite_esc __ARGS((char_u *p));
-long getdigits __ARGS((char_u **pp));
-int vim_isblankline __ARGS((char_u *lbuf));
-void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
-int hex2nr __ARGS((int c));
-int hexhex2nr __ARGS((char_u *p));
-int rem_backslash __ARGS((char_u *str));
-void backslash_halve __ARGS((char_u *p));
-char_u *backslash_halve_save __ARGS((char_u *p));
-void ebcdic2ascii __ARGS((char_u *buffer, int len));
+extern int init_chartab __ARGS((void));
+extern int buf_init_chartab __ARGS((buf_T *buf, int global));
+extern void trans_characters __ARGS((char_u *buf, int bufsize));
+extern char_u *transstr __ARGS((char_u *s));
+extern char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
+extern char_u *transchar __ARGS((int c));
+extern char_u *transchar_byte __ARGS((int c));
+extern void transchar_nonprint __ARGS((char_u *buf, int c));
+extern void transchar_hex __ARGS((char_u *buf, int c));
+extern int byte2cells __ARGS((int b));
+extern int char2cells __ARGS((int c));
+extern int ptr2cells __ARGS((char_u *p));
+extern int vim_strsize __ARGS((char_u *s));
+extern int vim_strnsize __ARGS((char_u *s, int len));
+extern int chartabsize __ARGS((char_u *p, colnr_T col));
+extern int linetabsize __ARGS((char_u *s));
+extern int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
+extern int vim_isIDc __ARGS((int c));
+extern int vim_iswordc __ARGS((int c));
+extern int vim_iswordp __ARGS((char_u *p));
+extern int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
+extern int vim_isfilec __ARGS((int c));
+extern int vim_isprintc __ARGS((int c));
+extern int vim_isprintc_strict __ARGS((int c));
+extern int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
+extern int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
+extern int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
+extern int in_win_border __ARGS((win_T *wp, colnr_T vcol));
+extern void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+extern colnr_T getvcol_nolist __ARGS((pos_T *posp));
+extern void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+extern void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
+extern char_u *skipwhite __ARGS((char_u *p));
+extern char_u *skipdigits __ARGS((char_u *p));
+extern char_u *skiphex __ARGS((char_u *p));
+extern char_u *skiptodigit __ARGS((char_u *p));
+extern char_u *skiptohex __ARGS((char_u *p));
+extern int vim_isdigit __ARGS((int c));
+extern int vim_isxdigit __ARGS((int c));
+extern int vim_islower __ARGS((int c));
+extern int vim_isupper __ARGS((int c));
+extern int vim_toupper __ARGS((int c));
+extern int vim_tolower __ARGS((int c));
+extern char_u *skiptowhite __ARGS((char_u *p));
+extern char_u *skiptowhite_esc __ARGS((char_u *p));
+extern long getdigits __ARGS((char_u **pp));
+extern int vim_isblankline __ARGS((char_u *lbuf));
+extern void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
+extern int hex2nr __ARGS((int c));
+extern int hexhex2nr __ARGS((char_u *p));
+extern int rem_backslash __ARGS((char_u *str));
+extern void backslash_halve __ARGS((char_u *p));
+extern char_u *backslash_halve_save __ARGS((char_u *p));
+extern void ebcdic2ascii __ARGS((char_u *buffer, int len));
 /* vim: set ft=c : */
diff --git a/src/proto/diff.pro b/src/proto/diff.pro
index e45127a..65b978f 100644
--- a/src/proto/diff.pro
+++ b/src/proto/diff.pro
@@ -1,26 +1,26 @@
 /* diff.c */
-void diff_buf_delete __ARGS((buf_T *buf));
-void diff_buf_adjust __ARGS((win_T *win));
-void diff_buf_add __ARGS((buf_T *buf));
-void diff_invalidate __ARGS((buf_T *buf));
-void diff_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-void ex_diffupdate __ARGS((exarg_T *eap));
-void ex_diffpatch __ARGS((exarg_T *eap));
-void ex_diffsplit __ARGS((exarg_T *eap));
-void ex_diffthis __ARGS((exarg_T *eap));
-void diff_win_options __ARGS((win_T *wp, int addbuf));
-void ex_diffoff __ARGS((exarg_T *eap));
-void diff_clear __ARGS((tabpage_T *tp));
-int diff_check __ARGS((win_T *wp, linenr_T lnum));
-int diff_check_fill __ARGS((win_T *wp, linenr_T lnum));
-void diff_set_topline __ARGS((win_T *fromwin, win_T *towin));
-int diffopt_changed __ARGS((void));
-int diffopt_horizontal __ARGS((void));
-int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp));
-int diff_infold __ARGS((win_T *wp, linenr_T lnum));
-void nv_diffgetput __ARGS((int put));
-void ex_diffgetput __ARGS((exarg_T *eap));
-int diff_mode_buf __ARGS((buf_T *buf));
-int diff_move_to __ARGS((int dir, long count));
-linenr_T diff_lnum_win __ARGS((linenr_T lnum, win_T *wp));
+extern void diff_buf_delete __ARGS((buf_T *buf));
+extern void diff_buf_adjust __ARGS((win_T *win));
+extern void diff_buf_add __ARGS((buf_T *buf));
+extern void diff_invalidate __ARGS((buf_T *buf));
+extern void diff_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern void ex_diffupdate __ARGS((exarg_T *eap));
+extern void ex_diffpatch __ARGS((exarg_T *eap));
+extern void ex_diffsplit __ARGS((exarg_T *eap));
+extern void ex_diffthis __ARGS((exarg_T *eap));
+extern void diff_win_options __ARGS((win_T *wp, int addbuf));
+extern void ex_diffoff __ARGS((exarg_T *eap));
+extern void diff_clear __ARGS((tabpage_T *tp));
+extern int diff_check __ARGS((win_T *wp, linenr_T lnum));
+extern int diff_check_fill __ARGS((win_T *wp, linenr_T lnum));
+extern void diff_set_topline __ARGS((win_T *fromwin, win_T *towin));
+extern int diffopt_changed __ARGS((void));
+extern int diffopt_horizontal __ARGS((void));
+extern int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp));
+extern int diff_infold __ARGS((win_T *wp, linenr_T lnum));
+extern void nv_diffgetput __ARGS((int put));
+extern void ex_diffgetput __ARGS((exarg_T *eap));
+extern int diff_mode_buf __ARGS((buf_T *buf));
+extern int diff_move_to __ARGS((int dir, long count));
+extern linenr_T diff_lnum_win __ARGS((linenr_T lnum, win_T *wp));
 /* vim: set ft=c : */
diff --git a/src/proto/digraph.pro b/src/proto/digraph.pro
index be5be71..6821f88 100644
--- a/src/proto/digraph.pro
+++ b/src/proto/digraph.pro
@@ -1,9 +1,9 @@
 /* digraph.c */
-int do_digraph __ARGS((int c));
-int get_digraph __ARGS((int cmdline));
-int getdigraph __ARGS((int char1, int char2, int meta));
-void putdigraph __ARGS((char_u *str));
-void listdigraphs __ARGS((void));
-char_u *keymap_init __ARGS((void));
-void ex_loadkeymap __ARGS((exarg_T *eap));
+extern int do_digraph __ARGS((int c));
+extern int get_digraph __ARGS((int cmdline));
+extern int getdigraph __ARGS((int char1, int char2, int meta));
+extern void putdigraph __ARGS((char_u *str));
+extern void listdigraphs __ARGS((void));
+extern char_u *keymap_init __ARGS((void));
+extern void ex_loadkeymap __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index a0e8685..b2c8200 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -1,99 +1,99 @@
 /* eval.c */
-void eval_init __ARGS((void));
-void eval_clear __ARGS((void));
-char_u *func_name __ARGS((void *cookie));
-linenr_T *func_breakpoint __ARGS((void *cookie));
-int *func_dbg_tick __ARGS((void *cookie));
-int func_level __ARGS((void *cookie));
-int current_func_returned __ARGS((void));
-void set_internal_string_var __ARGS((char_u *name, char_u *value));
-int var_redir_start __ARGS((char_u *name, int append));
-void var_redir_str __ARGS((char_u *value, int len));
-void var_redir_stop __ARGS((void));
-int eval_charconvert __ARGS((char_u *enc_from, char_u *enc_to, char_u *fname_from, char_u *fname_to));
-int eval_printexpr __ARGS((char_u *fname, char_u *args));
-void eval_diff __ARGS((char_u *origfile, char_u *newfile, char_u *outfile));
-void eval_patch __ARGS((char_u *origfile, char_u *difffile, char_u *outfile));
-int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
-char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
-int skip_expr __ARGS((char_u **pp));
-char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
-char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
-int eval_to_number __ARGS((char_u *expr));
-list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
-int get_spellword __ARGS((list_T *list, char_u **pp));
-typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
-void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
-long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
-void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
-void *save_funccal __ARGS((void));
-void restore_funccal __ARGS((void *vfc));
-void prof_child_enter __ARGS((proftime_T *tm));
-void prof_child_exit __ARGS((proftime_T *tm));
-int eval_foldexpr __ARGS((char_u *arg, int *cp));
-void ex_let __ARGS((exarg_T *eap));
-void *eval_for_line __ARGS((char_u *arg, int *errp, char_u **nextcmdp, int skip));
-int next_for_item __ARGS((void *fi_void, char_u *arg));
-void free_for_info __ARGS((void *fi_void));
-void set_context_for_expression __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
-void ex_call __ARGS((exarg_T *eap));
-void ex_unlet __ARGS((exarg_T *eap));
-void ex_lockvar __ARGS((exarg_T *eap));
-int do_unlet __ARGS((char_u *name, int forceit));
-void del_menutrans_vars __ARGS((void));
-char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
-list_T *list_alloc __ARGS((void));
-void list_unref __ARGS((list_T *l));
-void list_free __ARGS((list_T *l));
-dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
-int list_append_dict __ARGS((list_T *list, dict_T *dict));
-int garbage_collect __ARGS((void));
-dict_T *dict_alloc __ARGS((void));
-int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
-char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
-long get_dict_number __ARGS((dict_T *d, char_u *key));
-char_u *get_function_name __ARGS((expand_T *xp, int idx));
-char_u *get_expr_name __ARGS((expand_T *xp, int idx));
-long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop));
-void set_vim_var_nr __ARGS((int idx, long val));
-long get_vim_var_nr __ARGS((int idx));
-char_u *get_vim_var_str __ARGS((int idx));
-void set_vcount __ARGS((long count, long count1));
-void set_vim_var_string __ARGS((int idx, char_u *val, int len));
-void set_reg_var __ARGS((int c));
-char_u *v_exception __ARGS((char_u *oldval));
-char_u *v_throwpoint __ARGS((char_u *oldval));
-char_u *set_cmdarg __ARGS((exarg_T *eap, char_u *oldarg));
-void free_tv __ARGS((typval_T *varp));
-void clear_tv __ARGS((typval_T *varp));
-long get_tv_number_chk __ARGS((typval_T *varp, int *denote));
-char_u *get_tv_string_chk __ARGS((typval_T *varp));
-char_u *get_var_value __ARGS((char_u *name));
-void new_script_vars __ARGS((scid_T id));
-void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
-void vars_clear __ARGS((hashtab_T *ht));
-void ex_echo __ARGS((exarg_T *eap));
-void ex_echohl __ARGS((exarg_T *eap));
-void ex_execute __ARGS((exarg_T *eap));
-void ex_function __ARGS((exarg_T *eap));
-void free_all_functions __ARGS((void));
-void func_dump_profile __ARGS((FILE *fd));
-char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
-void ex_delfunction __ARGS((exarg_T *eap));
-void ex_return __ARGS((exarg_T *eap));
-int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv));
-void discard_pending_return __ARGS((void *rettv));
-char_u *get_return_cmd __ARGS((void *rettv));
-char_u *get_func_line __ARGS((int c, void *cookie, int indent));
-void func_line_start __ARGS((void *cookie));
-void func_line_exec __ARGS((void *cookie));
-void func_line_end __ARGS((void *cookie));
-int func_has_ended __ARGS((void *cookie));
-int func_has_abort __ARGS((void *cookie));
-int read_viminfo_varlist __ARGS((vir_T *virp, int writing));
-void write_viminfo_varlist __ARGS((FILE *fp));
-int store_session_globals __ARGS((FILE *fd));
-void last_set_msg __ARGS((scid_T scriptID));
-int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
-char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
+extern void eval_init __ARGS((void));
+extern void eval_clear __ARGS((void));
+extern char_u *func_name __ARGS((void *cookie));
+extern linenr_T *func_breakpoint __ARGS((void *cookie));
+extern int *func_dbg_tick __ARGS((void *cookie));
+extern int func_level __ARGS((void *cookie));
+extern int current_func_returned __ARGS((void));
+extern void set_internal_string_var __ARGS((char_u *name, char_u *value));
+extern int var_redir_start __ARGS((char_u *name, int append));
+extern void var_redir_str __ARGS((char_u *value, int len));
+extern void var_redir_stop __ARGS((void));
+extern int eval_charconvert __ARGS((char_u *enc_from, char_u *enc_to, char_u *fname_from, char_u *fname_to));
+extern int eval_printexpr __ARGS((char_u *fname, char_u *args));
+extern void eval_diff __ARGS((char_u *origfile, char_u *newfile, char_u *outfile));
+extern void eval_patch __ARGS((char_u *origfile, char_u *difffile, char_u *outfile));
+extern int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
+extern char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
+extern int skip_expr __ARGS((char_u **pp));
+extern char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
+extern char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
+extern int eval_to_number __ARGS((char_u *expr));
+extern list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+extern int get_spellword __ARGS((list_T *list, char_u **pp));
+extern typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
+extern void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+extern long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+extern void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+extern void *save_funccal __ARGS((void));
+extern void restore_funccal __ARGS((void *vfc));
+extern void prof_child_enter __ARGS((proftime_T *tm));
+extern void prof_child_exit __ARGS((proftime_T *tm));
+extern int eval_foldexpr __ARGS((char_u *arg, int *cp));
+extern void ex_let __ARGS((exarg_T *eap));
+extern void *eval_for_line __ARGS((char_u *arg, int *errp, char_u **nextcmdp, int skip));
+extern int next_for_item __ARGS((void *fi_void, char_u *arg));
+extern void free_for_info __ARGS((void *fi_void));
+extern void set_context_for_expression __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
+extern void ex_call __ARGS((exarg_T *eap));
+extern void ex_unlet __ARGS((exarg_T *eap));
+extern void ex_lockvar __ARGS((exarg_T *eap));
+extern int do_unlet __ARGS((char_u *name, int forceit));
+extern void del_menutrans_vars __ARGS((void));
+extern char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
+extern list_T *list_alloc __ARGS((void));
+extern void list_unref __ARGS((list_T *l));
+extern void list_free __ARGS((list_T *l));
+extern dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
+extern int list_append_dict __ARGS((list_T *list, dict_T *dict));
+extern int garbage_collect __ARGS((void));
+extern dict_T *dict_alloc __ARGS((void));
+extern int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
+extern char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
+extern long get_dict_number __ARGS((dict_T *d, char_u *key));
+extern char_u *get_function_name __ARGS((expand_T *xp, int idx));
+extern char_u *get_expr_name __ARGS((expand_T *xp, int idx));
+extern long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop));
+extern void set_vim_var_nr __ARGS((int idx, long val));
+extern long get_vim_var_nr __ARGS((int idx));
+extern char_u *get_vim_var_str __ARGS((int idx));
+extern void set_vcount __ARGS((long count, long count1));
+extern void set_vim_var_string __ARGS((int idx, char_u *val, int len));
+extern void set_reg_var __ARGS((int c));
+extern char_u *v_exception __ARGS((char_u *oldval));
+extern char_u *v_throwpoint __ARGS((char_u *oldval));
+extern char_u *set_cmdarg __ARGS((exarg_T *eap, char_u *oldarg));
+extern void free_tv __ARGS((typval_T *varp));
+extern void clear_tv __ARGS((typval_T *varp));
+extern long get_tv_number_chk __ARGS((typval_T *varp, int *denote));
+extern char_u *get_tv_string_chk __ARGS((typval_T *varp));
+extern char_u *get_var_value __ARGS((char_u *name));
+extern void new_script_vars __ARGS((scid_T id));
+extern void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
+extern void vars_clear __ARGS((hashtab_T *ht));
+extern void ex_echo __ARGS((exarg_T *eap));
+extern void ex_echohl __ARGS((exarg_T *eap));
+extern void ex_execute __ARGS((exarg_T *eap));
+extern void ex_function __ARGS((exarg_T *eap));
+extern void free_all_functions __ARGS((void));
+extern void func_dump_profile __ARGS((FILE *fd));
+extern char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
+extern void ex_delfunction __ARGS((exarg_T *eap));
+extern void ex_return __ARGS((exarg_T *eap));
+extern int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv));
+extern void discard_pending_return __ARGS((void *rettv));
+extern char_u *get_return_cmd __ARGS((void *rettv));
+extern char_u *get_func_line __ARGS((int c, void *cookie, int indent));
+extern void func_line_start __ARGS((void *cookie));
+extern void func_line_exec __ARGS((void *cookie));
+extern void func_line_end __ARGS((void *cookie));
+extern int func_has_ended __ARGS((void *cookie));
+extern int func_has_abort __ARGS((void *cookie));
+extern int read_viminfo_varlist __ARGS((vir_T *virp, int writing));
+extern void write_viminfo_varlist __ARGS((FILE *fp));
+extern int store_session_globals __ARGS((FILE *fd));
+extern void last_set_msg __ARGS((scid_T scriptID));
+extern int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
+extern char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
 /* vim: set ft=c : */
diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index ec6e573..992409b 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -1,52 +1,52 @@
 /* ex_docmd.c */
-void do_exmode __ARGS((int improved));
-int do_cmdline_cmd __ARGS((char_u *cmd));
-int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
-int getline_equal __ARGS((char_u *(*getline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
-void *getline_cookie __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
-int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
-int cmd_exists __ARGS((char_u *name));
-char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
-char_u *skip_range __ARGS((char_u *cmd, int *ctx));
-void ex_ni __ARGS((exarg_T *eap));
-int expand_filename __ARGS((exarg_T *eap, char_u **cmdlinep, char_u **errormsgp));
-void separate_nextcmd __ARGS((exarg_T *eap));
-int ends_excmd __ARGS((int c));
-char_u *find_nextcmd __ARGS((char_u *p));
-char_u *check_nextcmd __ARGS((char_u *p));
-char_u *get_command_name __ARGS((expand_T *xp, int idx));
-void ex_comclear __ARGS((exarg_T *eap));
-void uc_clear __ARGS((garray_T *gap));
-char_u *get_user_commands __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_flags __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_nargs __ARGS((expand_T *xp, int idx));
-char_u *get_user_cmd_complete __ARGS((expand_T *xp, int idx));
-int parse_compl_arg __ARGS((char_u *value, int vallen, int *complp, long *argt, char_u **compl_arg));
-void not_exiting __ARGS((void));
-void tabpage_close __ARGS((int forceit));
-void tabpage_close_other __ARGS((tabpage_T *tp, int forceit));
-void ex_all __ARGS((exarg_T *eap));
-void handle_drop __ARGS((int filec, char_u **filev, int split));
-void alist_clear __ARGS((alist_T *al));
-void alist_init __ARGS((alist_T *al));
-void alist_unlink __ARGS((alist_T *al));
-void alist_new __ARGS((void));
-void alist_expand __ARGS((int *fnum_list, int fnum_len));
-void alist_set __ARGS((alist_T *al, int count, char_u **files, int use_curbuf, int *fnum_list, int fnum_len));
-void alist_add __ARGS((alist_T *al, char_u *fname, int set_fnum));
-void alist_slash_adjust __ARGS((void));
-void ex_splitview __ARGS((exarg_T *eap));
-void tabpage_new __ARGS((void));
-void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin));
-void free_cd_dir __ARGS((void));
-void do_sleep __ARGS((long msec));
-int vim_mkdir_emsg __ARGS((char_u *name, int prot));
-FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode));
-void update_topline_cursor __ARGS((void));
-void exec_normal_cmd __ARGS((char_u *cmd, int remap, int silent));
-char_u *eval_vars __ARGS((char_u *src, int *usedlen, linenr_T *lnump, char_u **errormsg, char_u *srcstart));
-char_u *expand_sfile __ARGS((char_u *arg));
-int put_eol __ARGS((FILE *fd));
-int put_line __ARGS((FILE *fd, char *s));
-void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname));
+extern void do_exmode __ARGS((int improved));
+extern int do_cmdline_cmd __ARGS((char_u *cmd));
+extern int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
+extern int getline_equal __ARGS((char_u *(*getline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+extern void *getline_cookie __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
+extern int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+extern int cmd_exists __ARGS((char_u *name));
+extern char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
+extern char_u *skip_range __ARGS((char_u *cmd, int *ctx));
+extern void ex_ni __ARGS((exarg_T *eap));
+extern int expand_filename __ARGS((exarg_T *eap, char_u **cmdlinep, char_u **errormsgp));
+extern void separate_nextcmd __ARGS((exarg_T *eap));
+extern int ends_excmd __ARGS((int c));
+extern char_u *find_nextcmd __ARGS((char_u *p));
+extern char_u *check_nextcmd __ARGS((char_u *p));
+extern char_u *get_command_name __ARGS((expand_T *xp, int idx));
+extern void ex_comclear __ARGS((exarg_T *eap));
+extern void uc_clear __ARGS((garray_T *gap));
+extern char_u *get_user_commands __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_flags __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_nargs __ARGS((expand_T *xp, int idx));
+extern char_u *get_user_cmd_complete __ARGS((expand_T *xp, int idx));
+extern int parse_compl_arg __ARGS((char_u *value, int vallen, int *complp, long *argt, char_u **compl_arg));
+extern void not_exiting __ARGS((void));
+extern void tabpage_close __ARGS((int forceit));
+extern void tabpage_close_other __ARGS((tabpage_T *tp, int forceit));
+extern void ex_all __ARGS((exarg_T *eap));
+extern void handle_drop __ARGS((int filec, char_u **filev, int split));
+extern void alist_clear __ARGS((alist_T *al));
+extern void alist_init __ARGS((alist_T *al));
+extern void alist_unlink __ARGS((alist_T *al));
+extern void alist_new __ARGS((void));
+extern void alist_expand __ARGS((int *fnum_list, int fnum_len));
+extern void alist_set __ARGS((alist_T *al, int count, char_u **files, int use_curbuf, int *fnum_list, int fnum_len));
+extern void alist_add __ARGS((alist_T *al, char_u *fname, int set_fnum));
+extern void alist_slash_adjust __ARGS((void));
+extern void ex_splitview __ARGS((exarg_T *eap));
+extern void tabpage_new __ARGS((void));
+extern void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin));
+extern void free_cd_dir __ARGS((void));
+extern void do_sleep __ARGS((long msec));
+extern int vim_mkdir_emsg __ARGS((char_u *name, int prot));
+extern FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode));
+extern void update_topline_cursor __ARGS((void));
+extern void exec_normal_cmd __ARGS((char_u *cmd, int remap, int silent));
+extern char_u *eval_vars __ARGS((char_u *src, int *usedlen, linenr_T *lnump, char_u **errormsg, char_u *srcstart));
+extern char_u *expand_sfile __ARGS((char_u *arg));
+extern int put_eol __ARGS((FILE *fd));
+extern int put_line __ARGS((FILE *fd, char *s));
+extern void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname));
 /* vim: set ft=c : */
diff --git a/src/proto/ex_eval.pro b/src/proto/ex_eval.pro
index 8fb2342..20601f8 100644
--- a/src/proto/ex_eval.pro
+++ b/src/proto/ex_eval.pro
@@ -1,32 +1,32 @@
 /* ex_eval.c */
-int aborting __ARGS((void));
-void update_force_abort __ARGS((void));
-int should_abort __ARGS((int retcode));
-int aborted_in_try __ARGS((void));
-int cause_errthrow __ARGS((char_u *mesg, int severe, int *ignore));
-void do_errthrow __ARGS((struct condstack *cstack, char_u *cmdname));
-int do_intthrow __ARGS((struct condstack *cstack));
-void discard_current_exception __ARGS((void));
-void report_make_pending __ARGS((int pending, void *value));
-void report_resume_pending __ARGS((int pending, void *value));
-void report_discard_pending __ARGS((int pending, void *value));
-void ex_if __ARGS((exarg_T *eap));
-void ex_endif __ARGS((exarg_T *eap));
-void ex_else __ARGS((exarg_T *eap));
-void ex_while __ARGS((exarg_T *eap));
-void ex_continue __ARGS((exarg_T *eap));
-void ex_break __ARGS((exarg_T *eap));
-void ex_endwhile __ARGS((exarg_T *eap));
-void ex_throw __ARGS((exarg_T *eap));
-void do_throw __ARGS((struct condstack *cstack));
-void ex_try __ARGS((exarg_T *eap));
-void ex_catch __ARGS((exarg_T *eap));
-void ex_finally __ARGS((exarg_T *eap));
-void ex_endtry __ARGS((exarg_T *eap));
-void enter_cleanup __ARGS((cleanup_T *csp));
-void leave_cleanup __ARGS((cleanup_T *csp));
-int cleanup_conditionals __ARGS((struct condstack *cstack, int searched_cond, int inclusive));
-void rewind_conditionals __ARGS((struct condstack *cstack, int idx, int cond_type, int *cond_level));
-void ex_endfunction __ARGS((exarg_T *eap));
-int has_loop_cmd __ARGS((char_u *p));
+extern int aborting __ARGS((void));
+extern void update_force_abort __ARGS((void));
+extern int should_abort __ARGS((int retcode));
+extern int aborted_in_try __ARGS((void));
+extern int cause_errthrow __ARGS((char_u *mesg, int severe, int *ignore));
+extern void do_errthrow __ARGS((struct condstack *cstack, char_u *cmdname));
+extern int do_intthrow __ARGS((struct condstack *cstack));
+extern void discard_current_exception __ARGS((void));
+extern void report_make_pending __ARGS((int pending, void *value));
+extern void report_resume_pending __ARGS((int pending, void *value));
+extern void report_discard_pending __ARGS((int pending, void *value));
+extern void ex_if __ARGS((exarg_T *eap));
+extern void ex_endif __ARGS((exarg_T *eap));
+extern void ex_else __ARGS((exarg_T *eap));
+extern void ex_while __ARGS((exarg_T *eap));
+extern void ex_continue __ARGS((exarg_T *eap));
+extern void ex_break __ARGS((exarg_T *eap));
+extern void ex_endwhile __ARGS((exarg_T *eap));
+extern void ex_throw __ARGS((exarg_T *eap));
+extern void do_throw __ARGS((struct condstack *cstack));
+extern void ex_try __ARGS((exarg_T *eap));
+extern void ex_catch __ARGS((exarg_T *eap));
+extern void ex_finally __ARGS((exarg_T *eap));
+extern void ex_endtry __ARGS((exarg_T *eap));
+extern void enter_cleanup __ARGS((cleanup_T *csp));
+extern void leave_cleanup __ARGS((cleanup_T *csp));
+extern int cleanup_conditionals __ARGS((struct condstack *cstack, int searched_cond, int inclusive));
+extern void rewind_conditionals __ARGS((struct condstack *cstack, int idx, int cond_type, int *cond_level));
+extern void ex_endfunction __ARGS((exarg_T *eap));
+extern int has_loop_cmd __ARGS((char_u *p));
 /* vim: set ft=c : */
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index 6b4fa4f..ba18f38 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -1,53 +1,53 @@
 /* ex_getln.c */
-char_u *getcmdline __ARGS((int firstc, long count, int indent));
-char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
-int text_locked __ARGS((void));
-void text_locked_msg __ARGS((void));
-char_u *getexline __ARGS((int c, void *dummy, int indent));
-char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
-int cmdline_overstrike __ARGS((void));
-int cmdline_at_end __ARGS((void));
-colnr_T cmdline_getvcol_cursor __ARGS((void));
-void free_cmdline_buf __ARGS((void));
-void putcmdline __ARGS((int c, int shift));
-void unputcmdline __ARGS((void));
-int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
-void cmdline_paste_str __ARGS((char_u *s, int literally));
-void redrawcmdline __ARGS((void));
-void redrawcmd __ARGS((void));
-void compute_cmdrow __ARGS((void));
-void gotocmdline __ARGS((int clr));
-char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
-void ExpandInit __ARGS((expand_T *xp));
-void ExpandCleanup __ARGS((expand_T *xp));
-void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
-void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
-char_u *sm_gettail __ARGS((char_u *s));
-char_u *addstar __ARGS((char_u *fname, int len, int context));
-void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
-int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
-int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
-char_u *globpath __ARGS((char_u *path, char_u *file));
-void init_history __ARGS((void));
-int get_histtype __ARGS((char_u *name));
-void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
-int get_history_idx __ARGS((int histype));
-char_u *get_cmdline_str __ARGS((void));
-int get_cmdline_pos __ARGS((void));
-int set_cmdline_pos __ARGS((int pos));
-int get_cmdline_type __ARGS((void));
-char_u *get_history_entry __ARGS((int histype, int idx));
-int clr_history __ARGS((int histype));
-int del_history_entry __ARGS((int histype, char_u *str));
-int del_history_idx __ARGS((int histype, int idx));
-void remove_key_from_history __ARGS((void));
-int get_list_range __ARGS((char_u **str, int *num1, int *num2));
-void ex_history __ARGS((exarg_T *eap));
-void prepare_viminfo_history __ARGS((int asklen));
-int read_viminfo_history __ARGS((vir_T *virp));
-void finish_viminfo_history __ARGS((void));
-void write_viminfo_history __ARGS((FILE *fp));
-void cmd_pchar __ARGS((int c, int offset));
-int cmd_gchar __ARGS((int offset));
-char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
+extern char_u *getcmdline __ARGS((int firstc, long count, int indent));
+extern char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
+extern int text_locked __ARGS((void));
+extern void text_locked_msg __ARGS((void));
+extern char_u *getexline __ARGS((int c, void *dummy, int indent));
+extern char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
+extern int cmdline_overstrike __ARGS((void));
+extern int cmdline_at_end __ARGS((void));
+extern colnr_T cmdline_getvcol_cursor __ARGS((void));
+extern void free_cmdline_buf __ARGS((void));
+extern void putcmdline __ARGS((int c, int shift));
+extern void unputcmdline __ARGS((void));
+extern int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
+extern void cmdline_paste_str __ARGS((char_u *s, int literally));
+extern void redrawcmdline __ARGS((void));
+extern void redrawcmd __ARGS((void));
+extern void compute_cmdrow __ARGS((void));
+extern void gotocmdline __ARGS((int clr));
+extern char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
+extern void ExpandInit __ARGS((expand_T *xp));
+extern void ExpandCleanup __ARGS((expand_T *xp));
+extern void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
+extern void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
+extern char_u *sm_gettail __ARGS((char_u *s));
+extern char_u *addstar __ARGS((char_u *fname, int len, int context));
+extern void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+extern int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+extern int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+extern char_u *globpath __ARGS((char_u *path, char_u *file));
+extern void init_history __ARGS((void));
+extern int get_histtype __ARGS((char_u *name));
+extern void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+extern int get_history_idx __ARGS((int histype));
+extern char_u *get_cmdline_str __ARGS((void));
+extern int get_cmdline_pos __ARGS((void));
+extern int set_cmdline_pos __ARGS((int pos));
+extern int get_cmdline_type __ARGS((void));
+extern char_u *get_history_entry __ARGS((int histype, int idx));
+extern int clr_history __ARGS((int histype));
+extern int del_history_entry __ARGS((int histype, char_u *str));
+extern int del_history_idx __ARGS((int histype, int idx));
+extern void remove_key_from_history __ARGS((void));
+extern int get_list_range __ARGS((char_u **str, int *num1, int *num2));
+extern void ex_history __ARGS((exarg_T *eap));
+extern void prepare_viminfo_history __ARGS((int asklen));
+extern int read_viminfo_history __ARGS((vir_T *virp));
+extern void finish_viminfo_history __ARGS((void));
+extern void write_viminfo_history __ARGS((FILE *fp));
+extern void cmd_pchar __ARGS((int c, int offset));
+extern int cmd_gchar __ARGS((int offset));
+extern char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
 /* vim: set ft=c : */
diff --git a/src/proto/fold.pro b/src/proto/fold.pro
index 3318bbd..8551093 100644
--- a/src/proto/fold.pro
+++ b/src/proto/fold.pro
@@ -1,41 +1,41 @@
 /* fold.c */
-void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
-int hasAnyFolding __ARGS((win_T *win));
-int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
-int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
-int foldLevel __ARGS((linenr_T lnum));
-int lineFolded __ARGS((win_T *win, linenr_T lnum));
-long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
-int foldmethodIsManual __ARGS((win_T *wp));
-int foldmethodIsIndent __ARGS((win_T *wp));
-int foldmethodIsExpr __ARGS((win_T *wp));
-int foldmethodIsMarker __ARGS((win_T *wp));
-int foldmethodIsSyntax __ARGS((win_T *wp));
-int foldmethodIsDiff __ARGS((win_T *wp));
-void closeFold __ARGS((linenr_T lnum, long count));
-void closeFoldRecurse __ARGS((linenr_T lnum));
-void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
-void openFold __ARGS((linenr_T lnum, long count));
-void openFoldRecurse __ARGS((linenr_T lnum));
-void foldOpenCursor __ARGS((void));
-void newFoldLevel __ARGS((void));
-void foldCheckClose __ARGS((void));
-int foldManualAllowed __ARGS((int create));
-void foldCreate __ARGS((linenr_T start, linenr_T end));
-void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
-void clearFolding __ARGS((win_T *win));
-void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
-void foldUpdateAll __ARGS((win_T *win));
-int foldMoveTo __ARGS((int updown, int dir, long count));
-void foldInitWin __ARGS((win_T *newwin));
-int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
-void foldAdjustVisual __ARGS((void));
-void foldAdjustCursor __ARGS((void));
-void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
-void deleteFoldRecurse __ARGS((garray_T *gap));
-void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
-int getDeepestNesting __ARGS((void));
-char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
-void foldtext_cleanup __ARGS((char_u *str));
-int put_folds __ARGS((FILE *fd, win_T *wp));
+extern void copyFoldingState __ARGS((win_T *wp_from, win_T *wp_to));
+extern int hasAnyFolding __ARGS((win_T *win));
+extern int hasFolding __ARGS((linenr_T lnum, linenr_T *firstp, linenr_T *lastp));
+extern int hasFoldingWin __ARGS((win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop));
+extern int foldLevel __ARGS((linenr_T lnum));
+extern int lineFolded __ARGS((win_T *win, linenr_T lnum));
+extern long foldedCount __ARGS((win_T *win, linenr_T lnum, foldinfo_T *infop));
+extern int foldmethodIsManual __ARGS((win_T *wp));
+extern int foldmethodIsIndent __ARGS((win_T *wp));
+extern int foldmethodIsExpr __ARGS((win_T *wp));
+extern int foldmethodIsMarker __ARGS((win_T *wp));
+extern int foldmethodIsSyntax __ARGS((win_T *wp));
+extern int foldmethodIsDiff __ARGS((win_T *wp));
+extern void closeFold __ARGS((linenr_T lnum, long count));
+extern void closeFoldRecurse __ARGS((linenr_T lnum));
+extern void opFoldRange __ARGS((linenr_T first, linenr_T last, int opening, int recurse, int had_visual));
+extern void openFold __ARGS((linenr_T lnum, long count));
+extern void openFoldRecurse __ARGS((linenr_T lnum));
+extern void foldOpenCursor __ARGS((void));
+extern void newFoldLevel __ARGS((void));
+extern void foldCheckClose __ARGS((void));
+extern int foldManualAllowed __ARGS((int create));
+extern void foldCreate __ARGS((linenr_T start, linenr_T end));
+extern void deleteFold __ARGS((linenr_T start, linenr_T end, int recursive, int had_visual));
+extern void clearFolding __ARGS((win_T *win));
+extern void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot));
+extern void foldUpdateAll __ARGS((win_T *win));
+extern int foldMoveTo __ARGS((int updown, int dir, long count));
+extern void foldInitWin __ARGS((win_T *newwin));
+extern int find_wl_entry __ARGS((win_T *win, linenr_T lnum));
+extern void foldAdjustVisual __ARGS((void));
+extern void foldAdjustCursor __ARGS((void));
+extern void cloneFoldGrowArray __ARGS((garray_T *from, garray_T *to));
+extern void deleteFoldRecurse __ARGS((garray_T *gap));
+extern void foldMarkAdjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern int getDeepestNesting __ARGS((void));
+extern char_u *get_foldtext __ARGS((win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf));
+extern void foldtext_cleanup __ARGS((char_u *str));
+extern int put_folds __ARGS((FILE *fd, win_T *wp));
 /* vim: set ft=c : */
diff --git a/src/proto/getchar.pro b/src/proto/getchar.pro
index 9212342..608124b 100644
--- a/src/proto/getchar.pro
+++ b/src/proto/getchar.pro
@@ -1,63 +1,63 @@
 /* getchar.c */
-void free_buff __ARGS((struct buffheader *buf));
-char_u *get_recorded __ARGS((void));
-char_u *get_inserted __ARGS((void));
-int stuff_empty __ARGS((void));
-void typeahead_noflush __ARGS((int c));
-void flush_buffers __ARGS((int typeahead));
-void ResetRedobuff __ARGS((void));
-void saveRedobuff __ARGS((void));
-void restoreRedobuff __ARGS((void));
-void AppendToRedobuff __ARGS((char_u *s));
-void AppendToRedobuffLit __ARGS((char_u *str, int len));
-void AppendCharToRedobuff __ARGS((int c));
-void AppendNumberToRedobuff __ARGS((long n));
-void stuffReadbuff __ARGS((char_u *s));
-void stuffReadbuffLen __ARGS((char_u *s, long len));
-void stuffReadbuffSpec __ARGS((char_u *s));
-void stuffcharReadbuff __ARGS((int c));
-void stuffnumReadbuff __ARGS((long n));
-int start_redo __ARGS((long count, int old_redo));
-int start_redo_ins __ARGS((void));
-void stop_redo_ins __ARGS((void));
-int ins_typebuf __ARGS((char_u *str, int noremap, int offset, int nottyped, int silent));
-int typebuf_changed __ARGS((int tb_change_cnt));
-int typebuf_typed __ARGS((void));
-int typebuf_maplen __ARGS((void));
-void del_typebuf __ARGS((int len, int offset));
-int alloc_typebuf __ARGS((void));
-void free_typebuf __ARGS((void));
-int save_typebuf __ARGS((void));
-void save_typeahead __ARGS((tasave_T *tp));
-void restore_typeahead __ARGS((tasave_T *tp));
-void openscript __ARGS((char_u *name, int directly));
-void close_all_scripts __ARGS((void));
-int using_script __ARGS((void));
-void before_blocking __ARGS((void));
-void updatescript __ARGS((int c));
-int vgetc __ARGS((void));
-int safe_vgetc __ARGS((void));
-int vpeekc __ARGS((void));
-int vpeekc_nomap __ARGS((void));
-int vpeekc_any __ARGS((void));
-int char_avail __ARGS((void));
-void vungetc __ARGS((int c));
-int inchar __ARGS((char_u *buf, int maxlen, long wait_time, int tb_change_cnt));
-int fix_input_buffer __ARGS((char_u *buf, int len, int script));
-int input_available __ARGS((void));
-int do_map __ARGS((int maptype, char_u *arg, int mode, int abbrev));
-int get_map_mode __ARGS((char_u **cmdp, int forceit));
-void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr));
-void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr));
-int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr));
-int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr));
-char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx));
-int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file));
-int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol));
-int makemap __ARGS((FILE *fd, buf_T *buf));
-int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
-void check_map_keycodes __ARGS((void));
-char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr));
-void init_mappings __ARGS((void));
-void add_map __ARGS((char_u *map, int mode));
+extern void free_buff __ARGS((struct buffheader *buf));
+extern char_u *get_recorded __ARGS((void));
+extern char_u *get_inserted __ARGS((void));
+extern int stuff_empty __ARGS((void));
+extern void typeahead_noflush __ARGS((int c));
+extern void flush_buffers __ARGS((int typeahead));
+extern void ResetRedobuff __ARGS((void));
+extern void saveRedobuff __ARGS((void));
+extern void restoreRedobuff __ARGS((void));
+extern void AppendToRedobuff __ARGS((char_u *s));
+extern void AppendToRedobuffLit __ARGS((char_u *str, int len));
+extern void AppendCharToRedobuff __ARGS((int c));
+extern void AppendNumberToRedobuff __ARGS((long n));
+extern void stuffReadbuff __ARGS((char_u *s));
+extern void stuffReadbuffLen __ARGS((char_u *s, long len));
+extern void stuffReadbuffSpec __ARGS((char_u *s));
+extern void stuffcharReadbuff __ARGS((int c));
+extern void stuffnumReadbuff __ARGS((long n));
+extern int start_redo __ARGS((long count, int old_redo));
+extern int start_redo_ins __ARGS((void));
+extern void stop_redo_ins __ARGS((void));
+extern int ins_typebuf __ARGS((char_u *str, int noremap, int offset, int nottyped, int silent));
+extern int typebuf_changed __ARGS((int tb_change_cnt));
+extern int typebuf_typed __ARGS((void));
+extern int typebuf_maplen __ARGS((void));
+extern void del_typebuf __ARGS((int len, int offset));
+extern int alloc_typebuf __ARGS((void));
+extern void free_typebuf __ARGS((void));
+extern int save_typebuf __ARGS((void));
+extern void save_typeahead __ARGS((tasave_T *tp));
+extern void restore_typeahead __ARGS((tasave_T *tp));
+extern void openscript __ARGS((char_u *name, int directly));
+extern void close_all_scripts __ARGS((void));
+extern int using_script __ARGS((void));
+extern void before_blocking __ARGS((void));
+extern void updatescript __ARGS((int c));
+extern int vgetc __ARGS((void));
+extern int safe_vgetc __ARGS((void));
+extern int vpeekc __ARGS((void));
+extern int vpeekc_nomap __ARGS((void));
+extern int vpeekc_any __ARGS((void));
+extern int char_avail __ARGS((void));
+extern void vungetc __ARGS((int c));
+extern int inchar __ARGS((char_u *buf, int maxlen, long wait_time, int tb_change_cnt));
+extern int fix_input_buffer __ARGS((char_u *buf, int len, int script));
+extern int input_available __ARGS((void));
+extern int do_map __ARGS((int maptype, char_u *arg, int mode, int abbrev));
+extern int get_map_mode __ARGS((char_u **cmdp, int forceit));
+extern void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr));
+extern void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr));
+extern int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr));
+extern int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr));
+extern char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx));
+extern int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file));
+extern int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol));
+extern int makemap __ARGS((FILE *fd, buf_T *buf));
+extern int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
+extern void check_map_keycodes __ARGS((void));
+extern char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr));
+extern void init_mappings __ARGS((void));
+extern void add_map __ARGS((char_u *map, int mode));
 /* vim: set ft=c : */
diff --git a/src/proto/gui.pro b/src/proto/gui.pro
index 087c1a8..704cd1b 100644
--- a/src/proto/gui.pro
+++ b/src/proto/gui.pro
@@ -1,64 +1,64 @@
 /* gui.c */
-void gui_start __ARGS((void));
-void gui_prepare __ARGS((int *argc, char **argv));
-int gui_init_check __ARGS((void));
-void gui_init __ARGS((void));
-void gui_exit __ARGS((int rc));
-void gui_shell_closed __ARGS((void));
-int gui_init_font __ARGS((char_u *font_list, int fontset));
-int gui_get_wide_font __ARGS((void));
-void gui_set_cursor __ARGS((int row, int col));
-void gui_update_cursor __ARGS((int force, int clear_selection));
-void gui_position_menu __ARGS((void));
-int gui_get_base_width __ARGS((void));
-int gui_get_base_height __ARGS((void));
-void gui_resize_shell __ARGS((int pixel_width, int pixel_height));
-void gui_may_resize_shell __ARGS((void));
-int gui_get_shellsize __ARGS((void));
-void gui_set_shellsize __ARGS((int mustset, int fit_to_display));
-void gui_new_shellsize __ARGS((void));
-void gui_reset_scroll_region __ARGS((void));
-void gui_start_highlight __ARGS((int mask));
-void gui_stop_highlight __ARGS((int mask));
-void gui_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_update_cursor_later __ARGS((void));
-void gui_write __ARGS((char_u *s, int len));
-void gui_dont_update_cursor __ARGS((void));
-void gui_can_update_cursor __ARGS((void));
-int gui_outstr_nowrap __ARGS((char_u *s, int len, int flags, guicolor_T fg, guicolor_T bg, int back));
-void gui_undraw_cursor __ARGS((void));
-void gui_redraw __ARGS((int x, int y, int w, int h));
-int gui_redraw_block __ARGS((int row1, int col1, int row2, int col2, int flags));
-int gui_wait_for_chars __ARGS((long wtime));
-void gui_send_mouse_event __ARGS((int button, int x, int y, int repeated_click, int_u modifiers));
-int gui_xy2colrow __ARGS((int x, int y, int *colp));
-void gui_menu_cb __ARGS((vimmenu_T *menu));
-void gui_init_which_components __ARGS((char_u *oldval));
-int gui_use_tabline __ARGS((void));
-void gui_update_tabline __ARGS((void));
-void get_tabline_label __ARGS((tabpage_T *tp));
-int send_tabline_event __ARGS((int nr));
-void gui_remove_scrollbars __ARGS((void));
-void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
-scrollbar_T *gui_find_scrollbar __ARGS((long ident));
-void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
-void gui_update_scrollbars __ARGS((int force));
-int gui_do_scroll __ARGS((void));
-int gui_do_horiz_scroll __ARGS((void));
-void gui_check_colors __ARGS((void));
-guicolor_T gui_get_color __ARGS((char_u *name));
-int gui_get_lightness __ARGS((guicolor_T pixel));
-void gui_new_scrollbar_colors __ARGS((void));
-void gui_focus_change __ARGS((int in_focus));
-void gui_mouse_moved __ARGS((int x, int y));
-void gui_mouse_correct __ARGS((void));
-void ex_gui __ARGS((exarg_T *eap));
-int gui_find_bitmap __ARGS((char_u *name, char_u *buffer, char *ext));
-void gui_find_iconfile __ARGS((char_u *name, char_u *buffer, char *ext));
-void display_errors __ARGS((void));
-int no_console_input __ARGS((void));
-void gui_update_screen __ARGS((void));
-char_u *get_find_dialog_text __ARGS((char_u *arg, int *wwordp, int *mcasep));
-int gui_do_findrepl __ARGS((int flags, char_u *find_text, char_u *repl_text, int down));
-void gui_handle_drop __ARGS((int x, int y, int_u modifiers, char_u **fnames, int count));
+extern void gui_start __ARGS((void));
+extern void gui_prepare __ARGS((int *argc, char **argv));
+extern int gui_init_check __ARGS((void));
+extern void gui_init __ARGS((void));
+extern void gui_exit __ARGS((int rc));
+extern void gui_shell_closed __ARGS((void));
+extern int gui_init_font __ARGS((char_u *font_list, int fontset));
+extern int gui_get_wide_font __ARGS((void));
+extern void gui_set_cursor __ARGS((int row, int col));
+extern void gui_update_cursor __ARGS((int force, int clear_selection));
+extern void gui_position_menu __ARGS((void));
+extern int gui_get_base_width __ARGS((void));
+extern int gui_get_base_height __ARGS((void));
+extern void gui_resize_shell __ARGS((int pixel_width, int pixel_height));
+extern void gui_may_resize_shell __ARGS((void));
+extern int gui_get_shellsize __ARGS((void));
+extern void gui_set_shellsize __ARGS((int mustset, int fit_to_display));
+extern void gui_new_shellsize __ARGS((void));
+extern void gui_reset_scroll_region __ARGS((void));
+extern void gui_start_highlight __ARGS((int mask));
+extern void gui_stop_highlight __ARGS((int mask));
+extern void gui_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_update_cursor_later __ARGS((void));
+extern void gui_write __ARGS((char_u *s, int len));
+extern void gui_dont_update_cursor __ARGS((void));
+extern void gui_can_update_cursor __ARGS((void));
+extern int gui_outstr_nowrap __ARGS((char_u *s, int len, int flags, guicolor_T fg, guicolor_T bg, int back));
+extern void gui_undraw_cursor __ARGS((void));
+extern void gui_redraw __ARGS((int x, int y, int w, int h));
+extern int gui_redraw_block __ARGS((int row1, int col1, int row2, int col2, int flags));
+extern int gui_wait_for_chars __ARGS((long wtime));
+extern void gui_send_mouse_event __ARGS((int button, int x, int y, int repeated_click, int_u modifiers));
+extern int gui_xy2colrow __ARGS((int x, int y, int *colp));
+extern void gui_menu_cb __ARGS((vimmenu_T *menu));
+extern void gui_init_which_components __ARGS((char_u *oldval));
+extern int gui_use_tabline __ARGS((void));
+extern void gui_update_tabline __ARGS((void));
+extern void get_tabline_label __ARGS((tabpage_T *tp));
+extern int send_tabline_event __ARGS((int nr));
+extern void gui_remove_scrollbars __ARGS((void));
+extern void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
+extern scrollbar_T *gui_find_scrollbar __ARGS((long ident));
+extern void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
+extern void gui_update_scrollbars __ARGS((int force));
+extern int gui_do_scroll __ARGS((void));
+extern int gui_do_horiz_scroll __ARGS((void));
+extern void gui_check_colors __ARGS((void));
+extern guicolor_T gui_get_color __ARGS((char_u *name));
+extern int gui_get_lightness __ARGS((guicolor_T pixel));
+extern void gui_new_scrollbar_colors __ARGS((void));
+extern void gui_focus_change __ARGS((int in_focus));
+extern void gui_mouse_moved __ARGS((int x, int y));
+extern void gui_mouse_correct __ARGS((void));
+extern void ex_gui __ARGS((exarg_T *eap));
+extern int gui_find_bitmap __ARGS((char_u *name, char_u *buffer, char *ext));
+extern void gui_find_iconfile __ARGS((char_u *name, char_u *buffer, char *ext));
+extern void display_errors __ARGS((void));
+extern int no_console_input __ARGS((void));
+extern void gui_update_screen __ARGS((void));
+extern char_u *get_find_dialog_text __ARGS((char_u *arg, int *wwordp, int *mcasep));
+extern int gui_do_findrepl __ARGS((int flags, char_u *find_text, char_u *repl_text, int down));
+extern void gui_handle_drop __ARGS((int x, int y, int_u modifiers, char_u **fnames, int count));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_athena.pro b/src/proto/gui_athena.pro
index 353c33b..96c059a 100644
--- a/src/proto/gui_athena.pro
+++ b/src/proto/gui_athena.pro
@@ -1,31 +1,31 @@
 /* gui_athena.c */
-void gui_x11_create_widgets __ARGS((void));
-void gui_x11_destroy_widgets __ARGS((void));
-void gui_mch_set_toolbar_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-void gui_x11_set_back_color __ARGS((void));
-void gui_mch_enable_menu __ARGS((int flag));
-void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_new_menu_font __ARGS((void));
-void gui_mch_new_tooltip_font __ARGS((void));
-void gui_mch_new_tooltip_colors __ARGS((void));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_show_toolbar __ARGS((int showit));
-int gui_mch_compute_toolbar_height __ARGS((void));
-void gui_mch_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
-void gui_mch_toggle_tearoffs __ARGS((int enable));
-void gui_mch_new_menu_colors __ARGS((void));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_mch_def_colors __ARGS((void));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
-Window gui_x11_get_wid __ARGS((void));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+extern void gui_x11_create_widgets __ARGS((void));
+extern void gui_x11_destroy_widgets __ARGS((void));
+extern void gui_mch_set_toolbar_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern void gui_x11_set_back_color __ARGS((void));
+extern void gui_mch_enable_menu __ARGS((int flag));
+extern void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_new_menu_font __ARGS((void));
+extern void gui_mch_new_tooltip_font __ARGS((void));
+extern void gui_mch_new_tooltip_colors __ARGS((void));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern int gui_mch_compute_toolbar_height __ARGS((void));
+extern void gui_mch_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
+extern void gui_mch_toggle_tearoffs __ARGS((int enable));
+extern void gui_mch_new_menu_colors __ARGS((void));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_mch_def_colors __ARGS((void));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+extern Window gui_x11_get_wid __ARGS((void));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_gtk.pro b/src/proto/gui_gtk.pro
index 960d631..f1fdbe6 100644
--- a/src/proto/gui_gtk.pro
+++ b/src/proto/gui_gtk.pro
@@ -1,23 +1,23 @@
 /* gui_gtk.c */
-void gui_gtk_register_stock_icons __ARGS((void));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-void gui_gtk_set_mnemonics __ARGS((int enable));
-void gui_mch_toggle_tearoffs __ARGS((int enable));
-void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
-void gui_mch_find_dialog __ARGS((exarg_T *eap));
-void gui_mch_replace_dialog __ARGS((exarg_T *eap));
-void gui_gtk_synch_fonts __ARGS((void));
-void ex_helpfind __ARGS((exarg_T *eap));
+extern void gui_gtk_register_stock_icons __ARGS((void));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern void gui_gtk_set_mnemonics __ARGS((int enable));
+extern void gui_mch_toggle_tearoffs __ARGS((int enable));
+extern void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+extern char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
+extern void gui_mch_find_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_replace_dialog __ARGS((exarg_T *eap));
+extern void gui_gtk_synch_fonts __ARGS((void));
+extern void ex_helpfind __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_gtk_x11.pro b/src/proto/gui_gtk_x11.pro
index afb384e..46fcc9f 100644
--- a/src/proto/gui_gtk_x11.pro
+++ b/src/proto/gui_gtk_x11.pro
@@ -1,73 +1,73 @@
 /* gui_gtk_x11.c */
-void gui_mch_prepare __ARGS((int *argc, char **argv));
-void gui_mch_free_all __ARGS((void));
-void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
-void gui_mch_stop_blink __ARGS((void));
-void gui_mch_start_blink __ARGS((void));
-int gui_mch_init_check __ARGS((void));
-void gui_mch_show_tabline __ARGS((int showit));
-int gui_mch_showing_tabline __ARGS((void));
-void gui_mch_update_tabline __ARGS((void));
-void gui_mch_set_curtab __ARGS((int nr));
-int gui_mch_init __ARGS((void));
-void gui_mch_forked __ARGS((void));
-void gui_mch_new_colors __ARGS((void));
-int gui_mch_open __ARGS((void));
-void gui_mch_exit __ARGS((int rc));
-int gui_mch_get_winpos __ARGS((int *x, int *y));
-void gui_mch_set_winpos __ARGS((int x, int y));
-void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
-void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
-void gui_mch_enable_menu __ARGS((int showit));
-void gui_mch_show_toolbar __ARGS((int showit));
-int gui_mch_adjust_charheight __ARGS((void));
-GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int report_error, int fixed_width));
-char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
-int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
-GuiFont gui_mch_get_font __ARGS((char_u *name, int report_error));
-char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-void gui_mch_set_font __ARGS((GuiFont font));
-void gui_mch_set_fontset __ARGS((GuiFontset fontset));
-void gui_mch_free_font __ARGS((GuiFont font));
-void gui_mch_free_fontset __ARGS((GuiFontset fontset));
-guicolor_T gui_mch_get_color __ARGS((char_u *name));
-void gui_mch_set_fg_color __ARGS((guicolor_T color));
-void gui_mch_set_bg_color __ARGS((guicolor_T color));
-void gui_mch_set_sp_color __ARGS((guicolor_T color));
-int gui_gtk2_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-int gui_mch_haskey __ARGS((char_u *name));
-int gui_get_x11_windis __ARGS((Window *win, Display **dis));
-Display *gui_mch_get_display __ARGS((void));
-void gui_mch_beep __ARGS((void));
-void gui_mch_flash __ARGS((int msec));
-void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-void gui_mch_iconify __ARGS((void));
-void gui_mch_set_foreground __ARGS((void));
-void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-void gui_mch_update __ARGS((void));
-int gui_mch_wait_for_chars __ARGS((long wtime));
-void gui_mch_flush __ARGS((void));
-void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_mch_clear_all __ARGS((void));
-void gui_mch_delete_lines __ARGS((int row, int num_lines));
-void gui_mch_insert_lines __ARGS((int row, int num_lines));
-void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-void gui_mch_draw_menubar __ARGS((void));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-void gui_mch_getmouse __ARGS((int *x, int *y));
-void gui_mch_setmouse __ARGS((int x, int y));
-void gui_mch_mousehide __ARGS((int hide));
-void mch_set_mouse_shape __ARGS((int shape));
-void gui_mch_drawsign __ARGS((int row, int col, int typenr));
-void *gui_mch_register_sign __ARGS((char_u *signfile));
-void gui_mch_destroy_sign __ARGS((void *sign));
+extern void gui_mch_prepare __ARGS((int *argc, char **argv));
+extern void gui_mch_free_all __ARGS((void));
+extern void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+extern void gui_mch_stop_blink __ARGS((void));
+extern void gui_mch_start_blink __ARGS((void));
+extern int gui_mch_init_check __ARGS((void));
+extern void gui_mch_show_tabline __ARGS((int showit));
+extern int gui_mch_showing_tabline __ARGS((void));
+extern void gui_mch_update_tabline __ARGS((void));
+extern void gui_mch_set_curtab __ARGS((int nr));
+extern int gui_mch_init __ARGS((void));
+extern void gui_mch_forked __ARGS((void));
+extern void gui_mch_new_colors __ARGS((void));
+extern int gui_mch_open __ARGS((void));
+extern void gui_mch_exit __ARGS((int rc));
+extern int gui_mch_get_winpos __ARGS((int *x, int *y));
+extern void gui_mch_set_winpos __ARGS((int x, int y));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+extern void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void gui_mch_enable_menu __ARGS((int showit));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern int gui_mch_adjust_charheight __ARGS((void));
+extern GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int report_error, int fixed_width));
+extern char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
+extern int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
+extern GuiFont gui_mch_get_font __ARGS((char_u *name, int report_error));
+extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+extern void gui_mch_set_font __ARGS((GuiFont font));
+extern void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+extern void gui_mch_free_font __ARGS((GuiFont font));
+extern void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+extern guicolor_T gui_mch_get_color __ARGS((char_u *name));
+extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
+extern int gui_gtk2_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+extern void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+extern int gui_mch_haskey __ARGS((char_u *name));
+extern int gui_get_x11_windis __ARGS((Window *win, Display **dis));
+extern Display *gui_mch_get_display __ARGS((void));
+extern void gui_mch_beep __ARGS((void));
+extern void gui_mch_flash __ARGS((int msec));
+extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+extern void gui_mch_iconify __ARGS((void));
+extern void gui_mch_set_foreground __ARGS((void));
+extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+extern void gui_mch_update __ARGS((void));
+extern int gui_mch_wait_for_chars __ARGS((long wtime));
+extern void gui_mch_flush __ARGS((void));
+extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_mch_clear_all __ARGS((void));
+extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
+extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
+extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+extern void gui_mch_draw_menubar __ARGS((void));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+extern void gui_mch_getmouse __ARGS((int *x, int *y));
+extern void gui_mch_setmouse __ARGS((int x, int y));
+extern void gui_mch_mousehide __ARGS((int hide));
+extern void mch_set_mouse_shape __ARGS((int shape));
+extern void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+extern void *gui_mch_register_sign __ARGS((char_u *signfile));
+extern void gui_mch_destroy_sign __ARGS((void *sign));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_photon.pro b/src/proto/gui_photon.pro
index 098cdc7..0ffbaaa 100644
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -1,67 +1,67 @@
 /* gui_photon.c */
-void gui_ph_encoding_changed __ARGS((int new_encoding));
-void gui_mch_prepare __ARGS((int *argc, char **argv));
-int gui_mch_init __ARGS((void));
-int gui_mch_init_check __ARGS((void));
-int gui_mch_open __ARGS((void));
-void gui_mch_exit __ARGS((int rc));
-void gui_mch_update __ARGS((void));
-int gui_mch_wait_for_chars __ARGS((int wtime));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield));
-int gui_mch_get_winpos __ARGS((int *x, int *y));
-void gui_mch_set_winpos __ARGS((int x, int y));
-void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
-void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-void gui_mch_iconify __ARGS((void));
-void gui_mch_set_foreground __ARGS((void));
-void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, int val, int size, int max));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-void mch_set_mouse_shape __ARGS((int shape));
-void gui_mch_mousehide __ARGS((int hide));
-void gui_mch_getmouse __ARGS((int *x, int *y));
-void gui_mch_setmouse __ARGS((int x, int y));
-long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-void gui_mch_new_colors __ARGS((void));
-guicolor_T gui_mch_get_color __ARGS((char_u *name));
-void gui_mch_set_fg_color __ARGS((guicolor_T color));
-void gui_mch_set_bg_color __ARGS((guicolor_T color));
-void gui_mch_set_sp_color __ARGS((guicolor_T color));
-void gui_mch_invert_rectangle __ARGS((int row, int col, int nr, int nc));
-void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_mch_clear_all __ARGS((void));
-void gui_mch_delete_lines __ARGS((int row, int num_lines));
-void gui_mch_insert_lines __ARGS((int row, int num_lines));
-void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-void gui_mch_set_blinking __ARGS((long wait, long on, long off));
-void gui_mch_start_blink __ARGS((void));
-void gui_mch_stop_blink __ARGS((void));
-void gui_mch_beep __ARGS((void));
-void gui_mch_flash __ARGS((int msec));
-void gui_mch_flush __ARGS((void));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-int gui_mch_haskey __ARGS((char_u *name));
-void gui_mch_enable_menu __ARGS((int flag));
-void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int index));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int index));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-void gui_mch_draw_menubar __ARGS((void));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_mch_toggle_tearoffs __ARGS((int enable));
-void gui_mch_show_toolbar __ARGS((int showit));
-int gui_mch_init_font __ARGS((char_u *vim_font_name, int fontset));
-int gui_mch_adjust_charheight __ARGS((void));
-GuiFont gui_mch_get_font __ARGS((char_u *vim_font_name, int report_error));
-char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-void gui_mch_set_font __ARGS((GuiFont font));
-void gui_mch_free_font __ARGS((GuiFont font));
+extern void gui_ph_encoding_changed __ARGS((int new_encoding));
+extern void gui_mch_prepare __ARGS((int *argc, char **argv));
+extern int gui_mch_init __ARGS((void));
+extern int gui_mch_init_check __ARGS((void));
+extern int gui_mch_open __ARGS((void));
+extern void gui_mch_exit __ARGS((int rc));
+extern void gui_mch_update __ARGS((void));
+extern int gui_mch_wait_for_chars __ARGS((int wtime));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield));
+extern int gui_mch_get_winpos __ARGS((int *x, int *y));
+extern void gui_mch_set_winpos __ARGS((int x, int y));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+extern void gui_mch_iconify __ARGS((void));
+extern void gui_mch_set_foreground __ARGS((void));
+extern void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, int val, int size, int max));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern void mch_set_mouse_shape __ARGS((int shape));
+extern void gui_mch_mousehide __ARGS((int hide));
+extern void gui_mch_getmouse __ARGS((int *x, int *y));
+extern void gui_mch_setmouse __ARGS((int x, int y));
+extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+extern void gui_mch_new_colors __ARGS((void));
+extern guicolor_T gui_mch_get_color __ARGS((char_u *name));
+extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
+extern void gui_mch_invert_rectangle __ARGS((int row, int col, int nr, int nc));
+extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_mch_clear_all __ARGS((void));
+extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
+extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
+extern void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+extern void gui_mch_set_blinking __ARGS((long wait, long on, long off));
+extern void gui_mch_start_blink __ARGS((void));
+extern void gui_mch_stop_blink __ARGS((void));
+extern void gui_mch_beep __ARGS((void));
+extern void gui_mch_flash __ARGS((int msec));
+extern void gui_mch_flush __ARGS((void));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern int gui_mch_haskey __ARGS((char_u *name));
+extern void gui_mch_enable_menu __ARGS((int flag));
+extern void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int index));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int index));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+extern void gui_mch_draw_menubar __ARGS((void));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_mch_toggle_tearoffs __ARGS((int enable));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern int gui_mch_init_font __ARGS((char_u *vim_font_name, int fontset));
+extern int gui_mch_adjust_charheight __ARGS((void));
+extern GuiFont gui_mch_get_font __ARGS((char_u *vim_font_name, int report_error));
+extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+extern void gui_mch_set_font __ARGS((GuiFont font));
+extern void gui_mch_free_font __ARGS((GuiFont font));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_w16.pro b/src/proto/gui_w16.pro
index 254a68f..4ca3ded 100644
--- a/src/proto/gui_w16.pro
+++ b/src/proto/gui_w16.pro
@@ -1,75 +1,75 @@
 /* gui_w16.c */
-void gui_mch_set_blinking __ARGS((long wait, long on, long off));
-void gui_mch_stop_blink __ARGS((void));
-void gui_mch_start_blink __ARGS((void));
-LRESULT WINAPI vim_WindowProc __ARGS((HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam));
-void gui_mch_new_colors __ARGS((void));
-void gui_mch_def_colors __ARGS((void));
-int gui_mch_open __ARGS((void));
-int gui_mch_get_winpos __ARGS((int *x, int *y));
-void gui_mch_set_winpos __ARGS((int x, int y));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-int gui_mch_adjust_charheight __ARGS((void));
-GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
-char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-void gui_mch_free_font __ARGS((GuiFont font));
-guicolor_T gui_mch_get_color __ARGS((char_u *name));
-int gui_mch_haskey __ARGS((char_u *name));
-void gui_mch_beep __ARGS((void));
-void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-void gui_mch_iconify __ARGS((void));
-void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-void gui_mch_update __ARGS((void));
-int gui_mch_wait_for_chars __ARGS((int wtime));
-void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_mch_clear_all __ARGS((void));
-void gui_mch_enable_menu __ARGS((int flag));
-void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-void gui_mch_draw_menubar __ARGS((void));
-long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-void gui_mch_activate_window __ARGS((void));
-void gui_mch_show_toolbar __ARGS((int showit));
-void ex_simalt __ARGS((exarg_T *eap));
-void gui_mch_find_dialog __ARGS((exarg_T *eap));
-void gui_mch_replace_dialog __ARGS((exarg_T *eap));
-void gui_mch_mousehide __ARGS((int hide));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-void gui_mch_getmouse __ARGS((int *x, int *y));
-void gui_mch_setmouse __ARGS((int x, int y));
-void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-void gui_mch_flash __ARGS((int msec));
-void gui_mch_delete_lines __ARGS((int row, int num_lines));
-void gui_mch_insert_lines __ARGS((int row, int num_lines));
-void gui_mch_exit __ARGS((int rc));
-int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
-int gui_mch_maximized __ARGS((void));
-void gui_mch_newfont __ARGS((void));
-void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
-void mch_set_mouse_shape __ARGS((int shape));
-char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int get_cmd_args __ARGS((char *prog, char *cmdline, char ***argvp, char **tofree));
-void gui_mch_prepare __ARGS((int *argc, char **argv));
-int gui_mch_init __ARGS((void));
-void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-void gui_mch_set_font __ARGS((GuiFont font));
-void gui_mch_set_fg_color __ARGS((guicolor_T color));
-void gui_mch_set_bg_color __ARGS((guicolor_T color));
-void gui_mch_set_sp_color __ARGS((guicolor_T color));
-void gui_mch_draw_string __ARGS((int row, int col, char_u *text, int len, int flags));
-void gui_mch_flush __ARGS((void));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
-void gui_mch_set_foreground __ARGS((void));
+extern void gui_mch_set_blinking __ARGS((long wait, long on, long off));
+extern void gui_mch_stop_blink __ARGS((void));
+extern void gui_mch_start_blink __ARGS((void));
+extern LRESULT WINAPI vim_WindowProc __ARGS((HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam));
+extern void gui_mch_new_colors __ARGS((void));
+extern void gui_mch_def_colors __ARGS((void));
+extern int gui_mch_open __ARGS((void));
+extern int gui_mch_get_winpos __ARGS((int *x, int *y));
+extern void gui_mch_set_winpos __ARGS((int x, int y));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern int gui_mch_adjust_charheight __ARGS((void));
+extern GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+extern void gui_mch_free_font __ARGS((GuiFont font));
+extern guicolor_T gui_mch_get_color __ARGS((char_u *name));
+extern int gui_mch_haskey __ARGS((char_u *name));
+extern void gui_mch_beep __ARGS((void));
+extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+extern void gui_mch_iconify __ARGS((void));
+extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+extern void gui_mch_update __ARGS((void));
+extern int gui_mch_wait_for_chars __ARGS((int wtime));
+extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_mch_clear_all __ARGS((void));
+extern void gui_mch_enable_menu __ARGS((int flag));
+extern void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+extern void gui_mch_draw_menubar __ARGS((void));
+extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+extern void gui_mch_activate_window __ARGS((void));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern void ex_simalt __ARGS((exarg_T *eap));
+extern void gui_mch_find_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_replace_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_mousehide __ARGS((int hide));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern void gui_mch_getmouse __ARGS((int *x, int *y));
+extern void gui_mch_setmouse __ARGS((int x, int y));
+extern void gui_mch_flash __ARGS((int msec));
+extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
+extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
+extern void gui_mch_exit __ARGS((int rc));
+extern int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
+extern int gui_mch_maximized __ARGS((void));
+extern void gui_mch_newfont __ARGS((void));
+extern void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void mch_set_mouse_shape __ARGS((int shape));
+extern char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+extern int get_cmd_args __ARGS((char *prog, char *cmdline, char ***argvp, char **tofree));
+extern void gui_mch_prepare __ARGS((int *argc, char **argv));
+extern int gui_mch_init __ARGS((void));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+extern void gui_mch_set_font __ARGS((GuiFont font));
+extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
+extern void gui_mch_draw_string __ARGS((int row, int col, char_u *text, int len, int flags));
+extern void gui_mch_flush __ARGS((void));
+extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+extern void gui_mch_set_foreground __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro
index 31f44aa..9e41156 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -1,92 +1,92 @@
 /* gui_w32.c */
-void gui_mch_set_blinking __ARGS((long wait, long on, long off));
-void gui_mch_stop_blink __ARGS((void));
-void gui_mch_start_blink __ARGS((void));
-LRESULT WINAPI vim_WindowProc __ARGS((HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam));
-void gui_mch_new_colors __ARGS((void));
-void gui_mch_def_colors __ARGS((void));
-int gui_mch_open __ARGS((void));
-int gui_mch_get_winpos __ARGS((int *x, int *y));
-void gui_mch_set_winpos __ARGS((int x, int y));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-int gui_mch_adjust_charheight __ARGS((void));
-GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
-char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-void gui_mch_free_font __ARGS((GuiFont font));
-guicolor_T gui_mch_get_color __ARGS((char_u *name));
-int gui_mch_haskey __ARGS((char_u *name));
-void gui_mch_beep __ARGS((void));
-void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-void gui_mch_iconify __ARGS((void));
-void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-void gui_mch_update __ARGS((void));
-int gui_mch_wait_for_chars __ARGS((int wtime));
-void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_mch_clear_all __ARGS((void));
-void gui_mch_enable_menu __ARGS((int flag));
-void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
-void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-void gui_mch_draw_menubar __ARGS((void));
-long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-void gui_mch_activate_window __ARGS((void));
-void gui_mch_show_toolbar __ARGS((int showit));
-void ex_simalt __ARGS((exarg_T *eap));
-void gui_mch_find_dialog __ARGS((exarg_T *eap));
-void gui_mch_replace_dialog __ARGS((exarg_T *eap));
-void gui_mch_mousehide __ARGS((int hide));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-void gui_mch_getmouse __ARGS((int *x, int *y));
-void gui_mch_setmouse __ARGS((int x, int y));
-void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-void gui_mch_flash __ARGS((int msec));
-void gui_mch_delete_lines __ARGS((int row, int num_lines));
-void gui_mch_insert_lines __ARGS((int row, int num_lines));
-void gui_mch_exit __ARGS((int rc));
-int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
-int gui_mch_maximized __ARGS((void));
-void gui_mch_newfont __ARGS((void));
-void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
-void mch_set_mouse_shape __ARGS((int shape));
-char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int get_cmd_args __ARGS((char *prog, char *cmdline, char ***argvp, char **tofree));
-int gui_is_win32s __ARGS((void));
-void gui_mch_set_parent __ARGS((char *title));
-void gui_mch_prepare __ARGS((int *argc, char **argv));
-int gui_mch_init __ARGS((void));
-void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-void gui_mch_set_font __ARGS((GuiFont font));
-void gui_mch_set_fg_color __ARGS((guicolor_T color));
-void gui_mch_set_bg_color __ARGS((guicolor_T color));
-void gui_mch_set_sp_color __ARGS((guicolor_T color));
-void im_set_font __ARGS((LOGFONT *lf));
-void im_set_position __ARGS((int row, int col));
-void im_set_active __ARGS((int active));
-int im_get_status __ARGS((void));
-void gui_mch_draw_string __ARGS((int row, int col, char_u *text, int len, int flags));
-void gui_mch_flush __ARGS((void));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
-void gui_make_tearoff __ARGS((char_u *path_name));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
-void gui_mch_set_foreground __ARGS((void));
-void gui_mch_drawsign __ARGS((int row, int col, int typenr));
-void *gui_mch_register_sign __ARGS((char_u *signfile));
-void gui_mch_destroy_sign __ARGS((void *sign));
-int multiline_balloon_available __ARGS((void));
-void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
-void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
-void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
-BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
-void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
-void netbeans_draw_multisign_indicator __ARGS((int row));
+extern void gui_mch_set_blinking __ARGS((long wait, long on, long off));
+extern void gui_mch_stop_blink __ARGS((void));
+extern void gui_mch_start_blink __ARGS((void));
+extern LRESULT WINAPI vim_WindowProc __ARGS((HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam));
+extern void gui_mch_new_colors __ARGS((void));
+extern void gui_mch_def_colors __ARGS((void));
+extern int gui_mch_open __ARGS((void));
+extern int gui_mch_get_winpos __ARGS((int *x, int *y));
+extern void gui_mch_set_winpos __ARGS((int x, int y));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern int gui_mch_adjust_charheight __ARGS((void));
+extern GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+extern void gui_mch_free_font __ARGS((GuiFont font));
+extern guicolor_T gui_mch_get_color __ARGS((char_u *name));
+extern int gui_mch_haskey __ARGS((char_u *name));
+extern void gui_mch_beep __ARGS((void));
+extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+extern void gui_mch_iconify __ARGS((void));
+extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+extern void gui_mch_update __ARGS((void));
+extern int gui_mch_wait_for_chars __ARGS((int wtime));
+extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_mch_clear_all __ARGS((void));
+extern void gui_mch_enable_menu __ARGS((int flag));
+extern void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
+extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+extern void gui_mch_draw_menubar __ARGS((void));
+extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+extern void gui_mch_activate_window __ARGS((void));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern void ex_simalt __ARGS((exarg_T *eap));
+extern void gui_mch_find_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_replace_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_mousehide __ARGS((int hide));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern void gui_mch_getmouse __ARGS((int *x, int *y));
+extern void gui_mch_setmouse __ARGS((int x, int y));
+extern void gui_mch_flash __ARGS((int msec));
+extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
+extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
+extern void gui_mch_exit __ARGS((int rc));
+extern int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
+extern int gui_mch_maximized __ARGS((void));
+extern void gui_mch_newfont __ARGS((void));
+extern void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void mch_set_mouse_shape __ARGS((int shape));
+extern char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+extern int get_cmd_args __ARGS((char *prog, char *cmdline, char ***argvp, char **tofree));
+extern int gui_is_win32s __ARGS((void));
+extern void gui_mch_set_parent __ARGS((char *title));
+extern void gui_mch_prepare __ARGS((int *argc, char **argv));
+extern int gui_mch_init __ARGS((void));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+extern void gui_mch_set_font __ARGS((GuiFont font));
+extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
+extern void im_set_font __ARGS((LOGFONT *lf));
+extern void im_set_position __ARGS((int row, int col));
+extern void im_set_active __ARGS((int active));
+extern int im_get_status __ARGS((void));
+extern void gui_mch_draw_string __ARGS((int row, int col, char_u *text, int len, int flags));
+extern void gui_mch_flush __ARGS((void));
+extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
+extern void gui_make_tearoff __ARGS((char_u *path_name));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+extern void gui_mch_set_foreground __ARGS((void));
+extern void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+extern void *gui_mch_register_sign __ARGS((char_u *signfile));
+extern void gui_mch_destroy_sign __ARGS((void *sign));
+extern int multiline_balloon_available __ARGS((void));
+extern void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
+extern void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
+extern void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
+extern BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
+extern void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
+extern void netbeans_draw_multisign_indicator __ARGS((int row));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_xmdlg.pro b/src/proto/gui_xmdlg.pro
index 4f88c2f..dc6655a 100644
--- a/src/proto/gui_xmdlg.pro
+++ b/src/proto/gui_xmdlg.pro
@@ -1,3 +1,3 @@
 /* gui_xmdlg.c */
-char_u *gui_xm_select_font __ARGS((char_u *current));
+extern char_u *gui_xm_select_font __ARGS((char_u *current));
 /* vim: set ft=c : */
diff --git a/src/proto/hardcopy.pro b/src/proto/hardcopy.pro
index f192814..fde7c2a 100644
--- a/src/proto/hardcopy.pro
+++ b/src/proto/hardcopy.pro
@@ -1,21 +1,20 @@
 /* hardcopy.c */
-char_u *parse_printoptions __ARGS((void));
-char_u *parse_printmbfont __ARGS((void));
-int get_printer_page_num __ARGS((void));
-int prt_header_height __ARGS((void));
-int prt_use_number __ARGS((void));
-int prt_get_unit __ARGS((int idx));
-void ex_hardcopy __ARGS((exarg_T *eap));
-void mch_print_cleanup __ARGS((void));
-int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
-int mch_print_begin __ARGS((prt_settings_T *psettings));
-void mch_print_end __ARGS((prt_settings_T *psettings));
-int mch_print_end_page __ARGS((void));
-int mch_print_begin_page __ARGS((char_u *str));
-int mch_print_blank_page __ARGS((void));
-void mch_print_start_line __ARGS((int margin, int page_line));
-int mch_print_text_out __ARGS((char_u *p, int len));
-void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
-void mch_print_set_bg __ARGS((long_u bgcol));
-void mch_print_set_fg __ARGS((long_u fgcol));
+extern char_u *parse_printoptions __ARGS((void));
+extern char_u *parse_printmbfont __ARGS((void));
+extern int prt_header_height __ARGS((void));
+extern int prt_use_number __ARGS((void));
+extern int prt_get_unit __ARGS((int idx));
+extern void ex_hardcopy __ARGS((exarg_T *eap));
+extern void mch_print_cleanup __ARGS((void));
+extern int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
+extern int mch_print_begin __ARGS((prt_settings_T *psettings));
+extern void mch_print_end __ARGS((prt_settings_T *psettings));
+extern int mch_print_end_page __ARGS((void));
+extern int mch_print_begin_page __ARGS((char_u *str));
+extern int mch_print_blank_page __ARGS((void));
+extern void mch_print_start_line __ARGS((int margin, int page_line));
+extern int mch_print_text_out __ARGS((char_u *p, int len));
+extern void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
+extern void mch_print_set_bg __ARGS((long_u bgcol));
+extern void mch_print_set_fg __ARGS((long_u fgcol));
 /* vim: set ft=c : */
diff --git a/src/proto/hashtab.pro b/src/proto/hashtab.pro
new file mode 100644
index 0000000..90abb9f
--- /dev/null
+++ b/src/proto/hashtab.pro
@@ -0,0 +1,14 @@
+/* hashtab.c */
+extern void hash_init __ARGS((hashtab_T *ht));
+extern void hash_clear __ARGS((hashtab_T *ht));
+extern void hash_clear_all __ARGS((hashtab_T *ht, int off));
+extern hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
+extern hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
+extern void hash_debug_results __ARGS((void));
+extern int hash_add __ARGS((hashtab_T *ht, char_u *key));
+extern int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
+extern void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
+extern void hash_lock __ARGS((hashtab_T *ht));
+extern void hash_unlock __ARGS((hashtab_T *ht));
+extern hash_T hash_hash __ARGS((char_u *key));
+/* vim: set ft=c : */
diff --git a/src/proto/if_cscope.pro b/src/proto/if_cscope.pro
index 0617d13..aae9edf 100644
--- a/src/proto/if_cscope.pro
+++ b/src/proto/if_cscope.pro
@@ -1,9 +1,9 @@
 /* if_cscope.c */
-void do_cscope __ARGS((exarg_T *eap));
-void do_scscope __ARGS((exarg_T *eap));
-void do_cstag __ARGS((exarg_T *eap));
-int cs_fgets __ARGS((char_u *buf, int size));
-void cs_free_tags __ARGS((void));
-void cs_print_tags __ARGS((void));
-int cs_connection __ARGS((int num, char_u *dbpath, char_u *ppath));
+extern void do_cscope __ARGS((exarg_T *eap));
+extern void do_scscope __ARGS((exarg_T *eap));
+extern void do_cstag __ARGS((exarg_T *eap));
+extern int cs_fgets __ARGS((char_u *buf, int size));
+extern void cs_free_tags __ARGS((void));
+extern void cs_print_tags __ARGS((void));
+extern int cs_connection __ARGS((int num, char_u *dbpath, char_u *ppath));
 /* vim: set ft=c : */
diff --git a/src/proto/if_perlsfio.pro b/src/proto/if_perlsfio.pro
index bb90468..14fa4cc 100644
--- a/src/proto/if_perlsfio.pro
+++ b/src/proto/if_perlsfio.pro
@@ -1,3 +1,3 @@
 /* if_perlsfio.c */
-int *sfdcnewvim __ARGS((void));
+extern int *sfdcnewvim __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/if_tcl.pro b/src/proto/if_tcl.pro
index 0679ed4..2af9174 100644
--- a/src/proto/if_tcl.pro
+++ b/src/proto/if_tcl.pro
@@ -1,10 +1,10 @@
 /* if_tcl.c */
-void vim_tcl_init __ARGS((char *arg));
-int tcl_enabled __ARGS((int verbose));
-void tcl_end __ARGS((void));
-void ex_tcl __ARGS((exarg_T *eap));
-void ex_tclfile __ARGS((exarg_T *eap));
-void ex_tcldo __ARGS((exarg_T *eap));
-void tcl_buffer_free __ARGS((buf_T *buf));
-void tcl_window_free __ARGS((win_T *win));
+extern void vim_tcl_init __ARGS((char *arg));
+extern int tcl_enabled __ARGS((int verbose));
+extern void tcl_end __ARGS((void));
+extern void ex_tcl __ARGS((exarg_T *eap));
+extern void ex_tclfile __ARGS((exarg_T *eap));
+extern void ex_tcldo __ARGS((exarg_T *eap));
+extern void tcl_buffer_free __ARGS((buf_T *buf));
+extern void tcl_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
diff --git a/src/proto/main.pro b/src/proto/main.pro
index 2ecce79..93a312f 100644
--- a/src/proto/main.pro
+++ b/src/proto/main.pro
@@ -1,26 +1,26 @@
 /* main.c */
-void main_loop __ARGS((int cmdwin, int noexmode));
-void getout_preserve_modified __ARGS((int exitval));
-void getout __ARGS((int exitval));
-int process_env __ARGS((char_u *env, int is_viminit));
-void mainerr_arg_missing __ARGS((char_u *str));
-void time_push __ARGS((void *tv_rel, void *tv_start));
-void time_pop __ARGS((void *tp));
-void time_msg __ARGS((char *msg, void *tv_start));
-void server_to_input_buf __ARGS((char_u *str));
-char_u *eval_client_expr_to_string __ARGS((char_u *expr));
-char_u *serverConvert __ARGS((char_u *client_enc, char_u *data, char_u **tofree));
-int toF_TyA __ARGS((int c));
-int fkmap __ARGS((int c));
-void conv_to_pvim __ARGS((void));
-void conv_to_pstd __ARGS((void));
-char_u *lrswap __ARGS((char_u *ibuf));
-char_u *lrFswap __ARGS((char_u *cmdbuf, int len));
-char_u *lrF_sub __ARGS((char_u *ibuf));
-int cmdl_fkmap __ARGS((int c));
-int F_isalpha __ARGS((int c));
-int F_isdigit __ARGS((int c));
-int F_ischar __ARGS((int c));
-void farsi_fkey __ARGS((cmdarg_T *cap));
-int arabic_shape __ARGS((int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c));
+extern void main_loop __ARGS((int cmdwin, int noexmode));
+extern void getout_preserve_modified __ARGS((int exitval));
+extern void getout __ARGS((int exitval));
+extern int process_env __ARGS((char_u *env, int is_viminit));
+extern void mainerr_arg_missing __ARGS((char_u *str));
+extern void time_push __ARGS((void *tv_rel, void *tv_start));
+extern void time_pop __ARGS((void *tp));
+extern void time_msg __ARGS((char *msg, void *tv_start));
+extern void server_to_input_buf __ARGS((char_u *str));
+extern char_u *eval_client_expr_to_string __ARGS((char_u *expr));
+extern char_u *serverConvert __ARGS((char_u *client_enc, char_u *data, char_u **tofree));
+extern int toF_TyA __ARGS((int c));
+extern int fkmap __ARGS((int c));
+extern void conv_to_pvim __ARGS((void));
+extern void conv_to_pstd __ARGS((void));
+extern char_u *lrswap __ARGS((char_u *ibuf));
+extern char_u *lrFswap __ARGS((char_u *cmdbuf, int len));
+extern char_u *lrF_sub __ARGS((char_u *ibuf));
+extern int cmdl_fkmap __ARGS((int c));
+extern int F_isalpha __ARGS((int c));
+extern int F_isdigit __ARGS((int c));
+extern int F_ischar __ARGS((int c));
+extern void farsi_fkey __ARGS((cmdarg_T *cap));
+extern int arabic_shape __ARGS((int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c));
 /* vim: set ft=c : */
diff --git a/src/proto/mark.pro b/src/proto/mark.pro
index 13e1868..fe44031 100644
--- a/src/proto/mark.pro
+++ b/src/proto/mark.pro
@@ -1,30 +1,30 @@
 /* mark.c */
-int setmark __ARGS((int c));
-int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
-void setpcmark __ARGS((void));
-void checkpcmark __ARGS((void));
-pos_T *movemark __ARGS((int count));
-pos_T *movechangelist __ARGS((int count));
-pos_T *getmark __ARGS((int c, int changefile));
-pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
-pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
-void fmarks_check_names __ARGS((buf_T *buf));
-int check_mark __ARGS((pos_T *pos));
-void clrallmarks __ARGS((buf_T *buf));
-char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
-void do_marks __ARGS((exarg_T *eap));
-void ex_delmarks __ARGS((exarg_T *eap));
-void ex_jumps __ARGS((exarg_T *eap));
-void ex_changes __ARGS((exarg_T *eap));
-void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
-void copy_jumplist __ARGS((win_T *from, win_T *to));
-void free_jumplist __ARGS((win_T *wp));
-void set_last_cursor __ARGS((win_T *win));
-void free_all_marks __ARGS((void));
-int read_viminfo_filemark __ARGS((vir_T *virp, int force));
-void write_viminfo_filemarks __ARGS((FILE *fp));
-int removable __ARGS((char_u *name));
-int write_viminfo_marks __ARGS((FILE *fp_out));
-void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
+extern int setmark __ARGS((int c));
+extern int setmark_pos __ARGS((int c, pos_T *pos, int fnum));
+extern void setpcmark __ARGS((void));
+extern void checkpcmark __ARGS((void));
+extern pos_T *movemark __ARGS((int count));
+extern pos_T *movechangelist __ARGS((int count));
+extern pos_T *getmark __ARGS((int c, int changefile));
+extern pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
+extern pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
+extern void fmarks_check_names __ARGS((buf_T *buf));
+extern int check_mark __ARGS((pos_T *pos));
+extern void clrallmarks __ARGS((buf_T *buf));
+extern char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len));
+extern void do_marks __ARGS((exarg_T *eap));
+extern void ex_delmarks __ARGS((exarg_T *eap));
+extern void ex_jumps __ARGS((exarg_T *eap));
+extern void ex_changes __ARGS((exarg_T *eap));
+extern void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, long col_amount));
+extern void copy_jumplist __ARGS((win_T *from, win_T *to));
+extern void free_jumplist __ARGS((win_T *wp));
+extern void set_last_cursor __ARGS((win_T *win));
+extern void free_all_marks __ARGS((void));
+extern int read_viminfo_filemark __ARGS((vir_T *virp, int force));
+extern void write_viminfo_filemarks __ARGS((FILE *fp));
+extern int removable __ARGS((char_u *name));
+extern int write_viminfo_marks __ARGS((FILE *fp_out));
+extern void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
 /* vim: set ft=c : */
diff --git a/src/proto/memfile.pro b/src/proto/memfile.pro
index 3983b47..6c4329a 100644
--- a/src/proto/memfile.pro
+++ b/src/proto/memfile.pro
@@ -1,18 +1,18 @@
 /* memfile.c */
-memfile_T *mf_open __ARGS((char_u *fname, int flags));
-int mf_open_file __ARGS((memfile_T *mfp, char_u *fname));
-void mf_close __ARGS((memfile_T *mfp, int del_file));
-void mf_close_file __ARGS((buf_T *buf, int getlines));
-void mf_new_page_size __ARGS((memfile_T *mfp, unsigned new_size));
-bhdr_T *mf_new __ARGS((memfile_T *mfp, int negative, int page_count));
-bhdr_T *mf_get __ARGS((memfile_T *mfp, blocknr_T nr, int page_count));
-void mf_put __ARGS((memfile_T *mfp, bhdr_T *hp, int dirty, int infile));
-void mf_free __ARGS((memfile_T *mfp, bhdr_T *hp));
-int mf_sync __ARGS((memfile_T *mfp, int flags));
-void mf_set_dirty __ARGS((memfile_T *mfp));
-int mf_release_all __ARGS((void));
-blocknr_T mf_trans_del __ARGS((memfile_T *mfp, blocknr_T old_nr));
-void mf_set_ffname __ARGS((memfile_T *mfp));
-void mf_fullname __ARGS((memfile_T *mfp));
-int mf_need_trans __ARGS((memfile_T *mfp));
+extern memfile_T *mf_open __ARGS((char_u *fname, int flags));
+extern int mf_open_file __ARGS((memfile_T *mfp, char_u *fname));
+extern void mf_close __ARGS((memfile_T *mfp, int del_file));
+extern void mf_close_file __ARGS((buf_T *buf, int getlines));
+extern void mf_new_page_size __ARGS((memfile_T *mfp, unsigned new_size));
+extern bhdr_T *mf_new __ARGS((memfile_T *mfp, int negative, int page_count));
+extern bhdr_T *mf_get __ARGS((memfile_T *mfp, blocknr_T nr, int page_count));
+extern void mf_put __ARGS((memfile_T *mfp, bhdr_T *hp, int dirty, int infile));
+extern void mf_free __ARGS((memfile_T *mfp, bhdr_T *hp));
+extern int mf_sync __ARGS((memfile_T *mfp, int flags));
+extern void mf_set_dirty __ARGS((memfile_T *mfp));
+extern int mf_release_all __ARGS((void));
+extern blocknr_T mf_trans_del __ARGS((memfile_T *mfp, blocknr_T old_nr));
+extern void mf_set_ffname __ARGS((memfile_T *mfp));
+extern void mf_fullname __ARGS((memfile_T *mfp));
+extern int mf_need_trans __ARGS((memfile_T *mfp));
 /* vim: set ft=c : */
diff --git a/src/proto/message.pro b/src/proto/message.pro
index e029964..9161b05 100644
--- a/src/proto/message.pro
+++ b/src/proto/message.pro
@@ -1,70 +1,70 @@
 /* message.c */
-int msg __ARGS((char_u *s));
-int verb_msg __ARGS((char_u *s));
-int msg_attr __ARGS((char_u *s, int attr));
-int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
-char_u *msg_strtrunc __ARGS((char_u *s, int force));
-void trunc_string __ARGS((char_u *s, char_u *buf, int room));
-void reset_last_sourcing __ARGS((void));
-void msg_source __ARGS((int attr));
-int emsg __ARGS((char_u *s));
-int emsg2 __ARGS((char_u *s, char_u *a1));
-void emsg_invreg __ARGS((int name));
-char_u *msg_trunc_attr __ARGS((char_u *s, int force, int attr));
-char_u *msg_may_trunc __ARGS((int force, char_u *s));
-int delete_first_msg __ARGS((void));
-void ex_messages __ARGS((exarg_T *eap));
-void msg_end_prompt __ARGS((void));
-void wait_return __ARGS((int redraw));
-void set_keep_msg __ARGS((char_u *s, int attr));
-void set_keep_msg_from_hist __ARGS((void));
-void msg_start __ARGS((void));
-void msg_starthere __ARGS((void));
-void msg_putchar __ARGS((int c));
-void msg_putchar_attr __ARGS((int c, int attr));
-void msg_outnum __ARGS((long n));
-void msg_home_replace __ARGS((char_u *fname));
-void msg_home_replace_hl __ARGS((char_u *fname));
-int msg_outtrans __ARGS((char_u *str));
-int msg_outtrans_attr __ARGS((char_u *str, int attr));
-int msg_outtrans_len __ARGS((char_u *str, int len));
-char_u *msg_outtrans_one __ARGS((char_u *p, int attr));
-int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
-void msg_make __ARGS((char_u *arg));
-int msg_outtrans_special __ARGS((char_u *strstart, int from));
-char_u *str2special __ARGS((char_u **sp, int from));
-void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
-void msg_prt_line __ARGS((char_u *s, int list));
-void msg_puts __ARGS((char_u *s));
-void msg_puts_title __ARGS((char_u *s));
-void msg_puts_long_attr __ARGS((char_u *longstr, int attr));
-void msg_puts_long_len_attr __ARGS((char_u *longstr, int len, int attr));
-void msg_puts_attr __ARGS((char_u *s, int attr));
-void may_clear_sb_text __ARGS((void));
-void clear_sb_text __ARGS((void));
-void show_sb_text __ARGS((void));
-int msg_use_printf __ARGS((void));
-void mch_errmsg __ARGS((char *str));
-void mch_msg __ARGS((char *str));
-void msg_moremsg __ARGS((int full));
-void repeat_message __ARGS((void));
-void msg_clr_eos __ARGS((void));
-void msg_clr_eos_force __ARGS((void));
-void msg_clr_cmdline __ARGS((void));
-int msg_end __ARGS((void));
-void msg_check __ARGS((void));
-void verbose_enter __ARGS((void));
-void verbose_leave __ARGS((void));
-void verbose_enter_scroll __ARGS((void));
-void verbose_leave_scroll __ARGS((void));
-void verbose_stop __ARGS((void));
-int verbose_open __ARGS((void));
-void give_warning __ARGS((char_u *message, int hl));
-void msg_advance __ARGS((int col));
-int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
-void display_confirm_msg __ARGS((void));
-int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
-int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
-int vim_dialog_yesnoallcancel __ARGS((int type, char_u *title, char_u *message, int dflt));
-char_u *do_browse __ARGS((int flags, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter, buf_T *buf));
+extern int msg __ARGS((char_u *s));
+extern int verb_msg __ARGS((char_u *s));
+extern int msg_attr __ARGS((char_u *s, int attr));
+extern int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+extern char_u *msg_strtrunc __ARGS((char_u *s, int force));
+extern void trunc_string __ARGS((char_u *s, char_u *buf, int room));
+extern void reset_last_sourcing __ARGS((void));
+extern void msg_source __ARGS((int attr));
+extern int emsg __ARGS((char_u *s));
+extern int emsg2 __ARGS((char_u *s, char_u *a1));
+extern void emsg_invreg __ARGS((int name));
+extern char_u *msg_trunc_attr __ARGS((char_u *s, int force, int attr));
+extern char_u *msg_may_trunc __ARGS((int force, char_u *s));
+extern int delete_first_msg __ARGS((void));
+extern void ex_messages __ARGS((exarg_T *eap));
+extern void msg_end_prompt __ARGS((void));
+extern void wait_return __ARGS((int redraw));
+extern void set_keep_msg __ARGS((char_u *s, int attr));
+extern void set_keep_msg_from_hist __ARGS((void));
+extern void msg_start __ARGS((void));
+extern void msg_starthere __ARGS((void));
+extern void msg_putchar __ARGS((int c));
+extern void msg_putchar_attr __ARGS((int c, int attr));
+extern void msg_outnum __ARGS((long n));
+extern void msg_home_replace __ARGS((char_u *fname));
+extern void msg_home_replace_hl __ARGS((char_u *fname));
+extern int msg_outtrans __ARGS((char_u *str));
+extern int msg_outtrans_attr __ARGS((char_u *str, int attr));
+extern int msg_outtrans_len __ARGS((char_u *str, int len));
+extern char_u *msg_outtrans_one __ARGS((char_u *p, int attr));
+extern int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
+extern void msg_make __ARGS((char_u *arg));
+extern int msg_outtrans_special __ARGS((char_u *strstart, int from));
+extern char_u *str2special __ARGS((char_u **sp, int from));
+extern void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
+extern void msg_prt_line __ARGS((char_u *s, int list));
+extern void msg_puts __ARGS((char_u *s));
+extern void msg_puts_title __ARGS((char_u *s));
+extern void msg_puts_long_attr __ARGS((char_u *longstr, int attr));
+extern void msg_puts_long_len_attr __ARGS((char_u *longstr, int len, int attr));
+extern void msg_puts_attr __ARGS((char_u *s, int attr));
+extern void may_clear_sb_text __ARGS((void));
+extern void clear_sb_text __ARGS((void));
+extern void show_sb_text __ARGS((void));
+extern int msg_use_printf __ARGS((void));
+extern void mch_errmsg __ARGS((char *str));
+extern void mch_msg __ARGS((char *str));
+extern void msg_moremsg __ARGS((int full));
+extern void repeat_message __ARGS((void));
+extern void msg_clr_eos __ARGS((void));
+extern void msg_clr_eos_force __ARGS((void));
+extern void msg_clr_cmdline __ARGS((void));
+extern int msg_end __ARGS((void));
+extern void msg_check __ARGS((void));
+extern void verbose_enter __ARGS((void));
+extern void verbose_leave __ARGS((void));
+extern void verbose_enter_scroll __ARGS((void));
+extern void verbose_leave_scroll __ARGS((void));
+extern void verbose_stop __ARGS((void));
+extern int verbose_open __ARGS((void));
+extern void give_warning __ARGS((char_u *message, int hl));
+extern void msg_advance __ARGS((int col));
+extern int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+extern void display_confirm_msg __ARGS((void));
+extern int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
+extern int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+extern int vim_dialog_yesnoallcancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+extern char_u *do_browse __ARGS((int flags, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter, buf_T *buf));
 /* vim: set ft=c : */
diff --git a/src/proto/netbeans.pro b/src/proto/netbeans.pro
index 75d0149..71a5ec4 100644
--- a/src/proto/netbeans.pro
+++ b/src/proto/netbeans.pro
@@ -1,25 +1,25 @@
 /* netbeans.c */
-void messageFromNetbeansW32 __ARGS((void));
-int isNetbeansBuffer __ARGS((buf_T *bufp));
-int isNetbeansModified __ARGS((buf_T *bufp));
-void netbeans_end __ARGS((void));
-void ex_nbkey __ARGS((exarg_T *eap));
-void netbeans_beval_cb __ARGS((BalloonEval *beval, int state));
-void netbeans_startup_done __ARGS((void));
-void netbeans_send_disconnect __ARGS((void));
-void netbeans_frame_moved __ARGS((int new_x, int new_y));
-void netbeans_file_activated __ARGS((buf_T *bufp));
-void netbeans_file_opened __ARGS((buf_T *bufp));
-void netbeans_file_closed __ARGS((buf_T *bufp));
-void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
-void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
-void netbeans_unmodified __ARGS((buf_T *bufp));
-void netbeans_button_release __ARGS((int button));
-void netbeans_keycommand __ARGS((int key));
-void netbeans_save_buffer __ARGS((buf_T *bufp));
-void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
-int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
-void netbeans_draw_multisign_indicator __ARGS((int row));
-void netbeans_draw_multisign_indicator __ARGS((int row));
-void netbeans_gutter_click __ARGS((linenr_T lnum));
+extern void messageFromNetbeansW32 __ARGS((void));
+extern int isNetbeansBuffer __ARGS((buf_T *bufp));
+extern int isNetbeansModified __ARGS((buf_T *bufp));
+extern void netbeans_end __ARGS((void));
+extern void ex_nbkey __ARGS((exarg_T *eap));
+extern void netbeans_beval_cb __ARGS((BalloonEval *beval, int state));
+extern void netbeans_startup_done __ARGS((void));
+extern void netbeans_send_disconnect __ARGS((void));
+extern void netbeans_frame_moved __ARGS((int new_x, int new_y));
+extern void netbeans_file_activated __ARGS((buf_T *bufp));
+extern void netbeans_file_opened __ARGS((buf_T *bufp));
+extern void netbeans_file_closed __ARGS((buf_T *bufp));
+extern void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
+extern void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+extern void netbeans_unmodified __ARGS((buf_T *bufp));
+extern void netbeans_button_release __ARGS((int button));
+extern void netbeans_keycommand __ARGS((int key));
+extern void netbeans_save_buffer __ARGS((buf_T *bufp));
+extern void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+extern int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+extern void netbeans_draw_multisign_indicator __ARGS((int row));
+extern void netbeans_draw_multisign_indicator __ARGS((int row));
+extern void netbeans_gutter_click __ARGS((linenr_T lnum));
 /* vim: set ft=c : */
diff --git a/src/proto/normal.pro b/src/proto/normal.pro
index 55e8163..8280e45 100644
--- a/src/proto/normal.pro
+++ b/src/proto/normal.pro
@@ -1,26 +1,26 @@
 /* normal.c */
-void init_normal_cmds __ARGS((void));
-void normal_cmd __ARGS((oparg_T *oap, int toplevel));
-void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
-int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
-void check_visual_highlight __ARGS((void));
-void end_visual_mode __ARGS((void));
-void reset_VIsual_and_resel __ARGS((void));
-void reset_VIsual __ARGS((void));
-int find_ident_under_cursor __ARGS((char_u **string, int find_type));
-int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
-void clear_showcmd __ARGS((void));
-int add_to_showcmd __ARGS((int c));
-void add_to_showcmd_c __ARGS((int c));
-void push_showcmd __ARGS((void));
-void pop_showcmd __ARGS((void));
-void do_check_scrollbind __ARGS((int check));
-void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
-int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
-void scroll_redraw __ARGS((int up, long count));
-void handle_tabmenu __ARGS((void));
-void do_nv_ident __ARGS((int c1, int c2));
-int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
-void start_selection __ARGS((void));
-void may_start_select __ARGS((int c));
+extern void init_normal_cmds __ARGS((void));
+extern void normal_cmd __ARGS((oparg_T *oap, int toplevel));
+extern void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
+extern int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
+extern void check_visual_highlight __ARGS((void));
+extern void end_visual_mode __ARGS((void));
+extern void reset_VIsual_and_resel __ARGS((void));
+extern void reset_VIsual __ARGS((void));
+extern int find_ident_under_cursor __ARGS((char_u **string, int find_type));
+extern int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
+extern void clear_showcmd __ARGS((void));
+extern int add_to_showcmd __ARGS((int c));
+extern void add_to_showcmd_c __ARGS((int c));
+extern void push_showcmd __ARGS((void));
+extern void pop_showcmd __ARGS((void));
+extern void do_check_scrollbind __ARGS((int check));
+extern void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
+extern int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
+extern void scroll_redraw __ARGS((int up, long count));
+extern void handle_tabmenu __ARGS((void));
+extern void do_nv_ident __ARGS((int c1, int c2));
+extern int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
+extern void start_selection __ARGS((void));
+extern void may_start_select __ARGS((int c));
 /* vim: set ft=c : */
diff --git a/src/proto/ops.pro b/src/proto/ops.pro
index 3b4c9c4..fb51cab 100644
--- a/src/proto/ops.pro
+++ b/src/proto/ops.pro
@@ -1,60 +1,60 @@
 /* ops.c */
-int get_op_type __ARGS((int char1, int char2));
-int op_on_lines __ARGS((int op));
-int get_op_char __ARGS((int optype));
-int get_extra_op_char __ARGS((int optype));
-void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
-void shift_line __ARGS((int left, int round, int amount));
-void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
-int get_expr_register __ARGS((void));
-void set_expr_line __ARGS((char_u *new_line));
-char_u *get_expr_line __ARGS((void));
-char_u *get_expr_line_src __ARGS((void));
-int valid_yank_reg __ARGS((int regname, int writing));
-void get_yank_register __ARGS((int regname, int writing));
-int may_get_selection __ARGS((int regname));
-void *get_register __ARGS((int name, int copy));
-void put_register __ARGS((int name, void *reg));
-int yank_register_mline __ARGS((int regname));
-int do_record __ARGS((int c));
-int do_execreg __ARGS((int regname, int colon, int addcr));
-int insert_reg __ARGS((int regname, int literally));
-int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
-int cmdline_paste_reg __ARGS((int regname, int literally));
-void adjust_clip_reg __ARGS((int *rp));
-int op_delete __ARGS((oparg_T *oap));
-int op_replace __ARGS((oparg_T *oap, int c));
-void op_tilde __ARGS((oparg_T *oap));
-int swapchar __ARGS((int op_type, pos_T *pos));
-void op_insert __ARGS((oparg_T *oap, long count1));
-int op_change __ARGS((oparg_T *oap));
-void init_yank __ARGS((void));
-void clear_registers __ARGS((void));
-int op_yank __ARGS((oparg_T *oap, int deleting, int mess));
-void do_put __ARGS((int regname, int dir, long count, int flags));
-int preprocs_left __ARGS((void));
-int get_register_name __ARGS((int num));
-void ex_display __ARGS((exarg_T *eap));
-void do_do_join __ARGS((long count, int insert_space));
-int do_join __ARGS((int insert_space));
-void op_format __ARGS((oparg_T *oap, int keep_cursor));
-void op_formatexpr __ARGS((oparg_T *oap));
-int fex_format __ARGS((linenr_T lnum, long count));
-void format_lines __ARGS((linenr_T line_count));
-int paragraph_start __ARGS((linenr_T lnum));
-int do_addsub __ARGS((int command, linenr_T Prenum1));
-int read_viminfo_register __ARGS((vir_T *virp, int force));
-void write_viminfo_registers __ARGS((FILE *fp));
-void x11_export_final_selection __ARGS((void));
-void clip_free_selection __ARGS((VimClipboard *cbd));
-void clip_get_selection __ARGS((VimClipboard *cbd));
-void clip_yank_selection __ARGS((int type, char_u *str, long len, VimClipboard *cbd));
-int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd));
-void dnd_yank_drag_data __ARGS((char_u *str, long len));
-char_u get_reg_type __ARGS((int regname, long *reglen));
-char_u *get_reg_contents __ARGS((int regname, int allowexpr, int expr_src));
-void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append));
-void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len));
-void clear_oparg __ARGS((oparg_T *oap));
-void cursor_pos_info __ARGS((void));
+extern int get_op_type __ARGS((int char1, int char2));
+extern int op_on_lines __ARGS((int op));
+extern int get_op_char __ARGS((int optype));
+extern int get_extra_op_char __ARGS((int optype));
+extern void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
+extern void shift_line __ARGS((int left, int round, int amount));
+extern void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
+extern int get_expr_register __ARGS((void));
+extern void set_expr_line __ARGS((char_u *new_line));
+extern char_u *get_expr_line __ARGS((void));
+extern char_u *get_expr_line_src __ARGS((void));
+extern int valid_yank_reg __ARGS((int regname, int writing));
+extern void get_yank_register __ARGS((int regname, int writing));
+extern int may_get_selection __ARGS((int regname));
+extern void *get_register __ARGS((int name, int copy));
+extern void put_register __ARGS((int name, void *reg));
+extern int yank_register_mline __ARGS((int regname));
+extern int do_record __ARGS((int c));
+extern int do_execreg __ARGS((int regname, int colon, int addcr));
+extern int insert_reg __ARGS((int regname, int literally));
+extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
+extern int cmdline_paste_reg __ARGS((int regname, int literally));
+extern void adjust_clip_reg __ARGS((int *rp));
+extern int op_delete __ARGS((oparg_T *oap));
+extern int op_replace __ARGS((oparg_T *oap, int c));
+extern void op_tilde __ARGS((oparg_T *oap));
+extern int swapchar __ARGS((int op_type, pos_T *pos));
+extern void op_insert __ARGS((oparg_T *oap, long count1));
+extern int op_change __ARGS((oparg_T *oap));
+extern void init_yank __ARGS((void));
+extern void clear_registers __ARGS((void));
+extern int op_yank __ARGS((oparg_T *oap, int deleting, int mess));
+extern void do_put __ARGS((int regname, int dir, long count, int flags));
+extern int preprocs_left __ARGS((void));
+extern int get_register_name __ARGS((int num));
+extern void ex_display __ARGS((exarg_T *eap));
+extern void do_do_join __ARGS((long count, int insert_space));
+extern int do_join __ARGS((int insert_space));
+extern void op_format __ARGS((oparg_T *oap, int keep_cursor));
+extern void op_formatexpr __ARGS((oparg_T *oap));
+extern int fex_format __ARGS((linenr_T lnum, long count));
+extern void format_lines __ARGS((linenr_T line_count));
+extern int paragraph_start __ARGS((linenr_T lnum));
+extern int do_addsub __ARGS((int command, linenr_T Prenum1));
+extern int read_viminfo_register __ARGS((vir_T *virp, int force));
+extern void write_viminfo_registers __ARGS((FILE *fp));
+extern void x11_export_final_selection __ARGS((void));
+extern void clip_free_selection __ARGS((VimClipboard *cbd));
+extern void clip_get_selection __ARGS((VimClipboard *cbd));
+extern void clip_yank_selection __ARGS((int type, char_u *str, long len, VimClipboard *cbd));
+extern int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd));
+extern void dnd_yank_drag_data __ARGS((char_u *str, long len));
+extern char_u get_reg_type __ARGS((int regname, long *reglen));
+extern char_u *get_reg_contents __ARGS((int regname, int allowexpr, int expr_src));
+extern void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append));
+extern void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len));
+extern void clear_oparg __ARGS((oparg_T *oap));
+extern void cursor_pos_info __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/option.pro b/src/proto/option.pro
index faeec63..621d781 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -1,57 +1,56 @@
 /* option.c */
-void set_init_1 __ARGS((void));
-void set_string_default __ARGS((char *name, char_u *val));
-void set_number_default __ARGS((char *name, long val));
-void free_all_options __ARGS((void));
-void set_init_2 __ARGS((void));
-void set_init_3 __ARGS((void));
-void set_helplang_default __ARGS((char_u *lang));
-void init_gui_options __ARGS((void));
-void set_title_defaults __ARGS((void));
-int do_set __ARGS((char_u *arg, int opt_flags));
-void set_options_bin __ARGS((int oldval, int newval, int opt_flags));
-int get_viminfo_parameter __ARGS((int type));
-char_u *find_viminfo_parameter __ARGS((int type));
-void check_options __ARGS((void));
-void check_buf_options __ARGS((buf_T *buf));
-void free_string_option __ARGS((char_u *p));
-void clear_string_option __ARGS((char_u **pp));
-void set_term_option_alloced __ARGS((char_u **p));
-int was_set_insecurely __ARGS((char_u *opt, int opt_flags));
-void set_string_option_direct __ARGS((char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid));
-char_u *check_stl_option __ARGS((char_u *s));
-void set_option_scriptID __ARGS((char_u *name, int id));
-int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags));
-void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
-char_u *get_term_code __ARGS((char_u *tname));
-char_u *get_highlight_default __ARGS((void));
-char_u *get_encoding_default __ARGS((void));
-int makeset __ARGS((FILE *fd, int opt_flags, int local_only));
-int makefoldset __ARGS((FILE *fd));
-void clear_termoptions __ARGS((void));
-void free_termoptions __ARGS((void));
-void set_term_defaults __ARGS((void));
-void comp_col __ARGS((void));
-char_u *get_equalprg __ARGS((void));
-void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to));
-void copy_winopt __ARGS((winopt_T *from, winopt_T *to));
-void check_win_options __ARGS((win_T *win));
-void check_winopt __ARGS((winopt_T *wop));
-void clear_winopt __ARGS((winopt_T *wop));
-void buf_copy_options __ARGS((buf_T *buf, int flags));
-void reset_modifiable __ARGS((void));
-void set_iminsert_global __ARGS((void));
-void set_imsearch_global __ARGS((void));
-void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
-int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
-int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
-int has_format_option __ARGS((int x));
-int shortmess __ARGS((int x));
-void vimrc_found __ARGS((void));
-void change_compatible __ARGS((int on));
-int option_was_set __ARGS((char_u *name));
-int can_bs __ARGS((int what));
-void save_file_ff __ARGS((buf_T *buf));
-int file_ff_differs __ARGS((buf_T *buf));
-int check_ff_value __ARGS((char_u *p));
+extern void set_init_1 __ARGS((void));
+extern void set_string_default __ARGS((char *name, char_u *val));
+extern void set_number_default __ARGS((char *name, long val));
+extern void free_all_options __ARGS((void));
+extern void set_init_2 __ARGS((void));
+extern void set_init_3 __ARGS((void));
+extern void set_helplang_default __ARGS((char_u *lang));
+extern void init_gui_options __ARGS((void));
+extern void set_title_defaults __ARGS((void));
+extern int do_set __ARGS((char_u *arg, int opt_flags));
+extern void set_options_bin __ARGS((int oldval, int newval, int opt_flags));
+extern int get_viminfo_parameter __ARGS((int type));
+extern char_u *find_viminfo_parameter __ARGS((int type));
+extern void check_options __ARGS((void));
+extern void check_buf_options __ARGS((buf_T *buf));
+extern void free_string_option __ARGS((char_u *p));
+extern void clear_string_option __ARGS((char_u **pp));
+extern void set_term_option_alloced __ARGS((char_u **p));
+extern int was_set_insecurely __ARGS((char_u *opt, int opt_flags));
+extern void set_string_option_direct __ARGS((char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid));
+extern char_u *check_stl_option __ARGS((char_u *s));
+extern int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags));
+extern void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags));
+extern char_u *get_term_code __ARGS((char_u *tname));
+extern char_u *get_highlight_default __ARGS((void));
+extern char_u *get_encoding_default __ARGS((void));
+extern int makeset __ARGS((FILE *fd, int opt_flags, int local_only));
+extern int makefoldset __ARGS((FILE *fd));
+extern void clear_termoptions __ARGS((void));
+extern void free_termoptions __ARGS((void));
+extern void set_term_defaults __ARGS((void));
+extern void comp_col __ARGS((void));
+extern char_u *get_equalprg __ARGS((void));
+extern void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to));
+extern void copy_winopt __ARGS((winopt_T *from, winopt_T *to));
+extern void check_win_options __ARGS((win_T *win));
+extern void check_winopt __ARGS((winopt_T *wop));
+extern void clear_winopt __ARGS((winopt_T *wop));
+extern void buf_copy_options __ARGS((buf_T *buf, int flags));
+extern void reset_modifiable __ARGS((void));
+extern void set_iminsert_global __ARGS((void));
+extern void set_imsearch_global __ARGS((void));
+extern void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
+extern int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+extern int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
+extern int has_format_option __ARGS((int x));
+extern int shortmess __ARGS((int x));
+extern void vimrc_found __ARGS((void));
+extern void change_compatible __ARGS((int on));
+extern int option_was_set __ARGS((char_u *name));
+extern int can_bs __ARGS((int what));
+extern void save_file_ff __ARGS((buf_T *buf));
+extern int file_ff_differs __ARGS((buf_T *buf));
+extern int check_ff_value __ARGS((char_u *p));
 /* vim: set ft=c : */
diff --git a/src/proto/os_amiga.pro b/src/proto/os_amiga.pro
index 317e211..479297d 100644
--- a/src/proto/os_amiga.pro
+++ b/src/proto/os_amiga.pro
@@ -1,46 +1,46 @@
 /* os_amiga.c */
-void win_resize_on __ARGS((void));
-void win_resize_off __ARGS((void));
-void mch_write __ARGS((char_u *p, int len));
-int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
-int mch_char_avail __ARGS((void));
-long_u mch_avail_mem __ARGS((int special));
-void mch_delay __ARGS((long msec, int ignoreinput));
-void mch_suspend __ARGS((void));
-void mch_init __ARGS((void));
-int mch_check_win __ARGS((int argc, char **argv));
-int mch_input_isatty __ARGS((void));
-void fname_case __ARGS((char_u *name, int len));
-void mch_settitle __ARGS((char_u *title, char_u *icon));
-void mch_restore_title __ARGS((int which));
-int mch_can_restore_title __ARGS((void));
-int mch_can_restore_icon __ARGS((void));
-int mch_get_user_name __ARGS((char_u *s, int len));
-void mch_get_host_name __ARGS((char_u *s, int len));
-long mch_get_pid __ARGS((void));
-int mch_dirname __ARGS((char_u *buf, int len));
-int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-int mch_isFullName __ARGS((char_u *fname));
-long mch_getperm __ARGS((char_u *name));
-int mch_setperm __ARGS((char_u *name, long perm));
-void mch_hide __ARGS((char_u *name));
-int mch_isdir __ARGS((char_u *name));
-void mch_mkdir __ARGS((char_u *name));
-int mch_can_exe __ARGS((char_u *name));
-int mch_nodetype __ARGS((char_u *name));
-void mch_early_init __ARGS((void));
-void mch_exit __ARGS((int r));
-void mch_settmode __ARGS((int tmode));
-int mch_screenmode __ARGS((char_u *arg));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-void mch_new_shellsize __ARGS((void));
-int mch_call_shell __ARGS((char_u *cmd, int options));
-void mch_breakcheck __ARGS((void));
-long Chk_Abort __ARGS((void));
-int mch_expandpath __ARGS((garray_T *gap, char_u *pat, int flags));
-int mch_has_exp_wildcard __ARGS((char_u *p));
-int mch_has_wildcard __ARGS((char_u *p));
-char_u *mch_getenv __ARGS((char_u *var));
-int mch_setenv __ARGS((char *var, char *value, int x));
+extern void win_resize_on __ARGS((void));
+extern void win_resize_off __ARGS((void));
+extern void mch_write __ARGS((char_u *p, int len));
+extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
+extern int mch_char_avail __ARGS((void));
+extern long_u mch_avail_mem __ARGS((int special));
+extern void mch_delay __ARGS((long msec, int ignoreinput));
+extern void mch_suspend __ARGS((void));
+extern void mch_init __ARGS((void));
+extern int mch_check_win __ARGS((int argc, char **argv));
+extern int mch_input_isatty __ARGS((void));
+extern void fname_case __ARGS((char_u *name, int len));
+extern void mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void mch_restore_title __ARGS((int which));
+extern int mch_can_restore_title __ARGS((void));
+extern int mch_can_restore_icon __ARGS((void));
+extern int mch_get_user_name __ARGS((char_u *s, int len));
+extern void mch_get_host_name __ARGS((char_u *s, int len));
+extern long mch_get_pid __ARGS((void));
+extern int mch_dirname __ARGS((char_u *buf, int len));
+extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+extern int mch_isFullName __ARGS((char_u *fname));
+extern long mch_getperm __ARGS((char_u *name));
+extern int mch_setperm __ARGS((char_u *name, long perm));
+extern void mch_hide __ARGS((char_u *name));
+extern int mch_isdir __ARGS((char_u *name));
+extern void mch_mkdir __ARGS((char_u *name));
+extern int mch_can_exe __ARGS((char_u *name));
+extern int mch_nodetype __ARGS((char_u *name));
+extern void mch_early_init __ARGS((void));
+extern void mch_exit __ARGS((int r));
+extern void mch_settmode __ARGS((int tmode));
+extern int mch_screenmode __ARGS((char_u *arg));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern void mch_new_shellsize __ARGS((void));
+extern int mch_call_shell __ARGS((char_u *cmd, int options));
+extern void mch_breakcheck __ARGS((void));
+extern long Chk_Abort __ARGS((void));
+extern int mch_expandpath __ARGS((garray_T *gap, char_u *pat, int flags));
+extern int mch_has_exp_wildcard __ARGS((char_u *p));
+extern int mch_has_wildcard __ARGS((char_u *p));
+extern char_u *mch_getenv __ARGS((char_u *var));
+extern int mch_setenv __ARGS((char *var, char *value, int x));
 /* vim: set ft=c : */
diff --git a/src/proto/os_mswin.pro b/src/proto/os_mswin.pro
index 966b018..aaef05b 100644
--- a/src/proto/os_mswin.pro
+++ b/src/proto/os_mswin.pro
@@ -1,63 +1,63 @@
 /* os_mswin.c */
-void mch_exit __ARGS((int r));
-void mch_early_init __ARGS((void));
-int mch_input_isatty __ARGS((void));
-void mch_settitle __ARGS((char_u *title, char_u *icon));
-void mch_restore_title __ARGS((int which));
-int mch_can_restore_title __ARGS((void));
-int mch_can_restore_icon __ARGS((void));
-int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-int mch_isFullName __ARGS((char_u *fname));
-void slash_adjust __ARGS((char_u *p));
-int vim_stat __ARGS((const char *name, struct stat *stp));
-void mch_settmode __ARGS((int tmode));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-void mch_new_shellsize __ARGS((void));
-void mch_suspend __ARGS((void));
-void display_errors __ARGS((void));
-int mch_has_exp_wildcard __ARGS((char_u *p));
-int mch_has_wildcard __ARGS((char_u *p));
-int mch_chdir __ARGS((char *path));
-int can_end_termcap_mode __ARGS((int give_msg));
-int mch_screenmode __ARGS((char_u *arg));
-int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
-int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
-int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
-void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
-void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
-int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
-char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
-void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
-void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-void DumpPutS __ARGS((const char *psz));
-int mch_get_winpos __ARGS((int *x, int *y));
-void mch_set_winpos __ARGS((int x, int y));
-void mch_print_cleanup __ARGS((void));
-int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
-int mch_print_begin __ARGS((prt_settings_T *psettings));
-void mch_print_end __ARGS((prt_settings_T *psettings));
-int mch_print_end_page __ARGS((void));
-int mch_print_begin_page __ARGS((char_u *msg));
-int mch_print_blank_page __ARGS((void));
-void mch_print_start_line __ARGS((int margin, int page_line));
-int mch_print_text_out __ARGS((char_u *p, int len));
-void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
-void mch_print_set_bg __ARGS((unsigned long bgcol));
-void mch_print_set_fg __ARGS((unsigned long fgcol));
-char_u *mch_resolve_shortcut __ARGS((char_u *fname));
-void win32_set_foreground __ARGS((void));
-void serverInitMessaging __ARGS((void));
-void serverSetName __ARGS((char_u *name));
-char_u *serverGetVimNames __ARGS((void));
-int serverSendReply __ARGS((char_u *name, char_u *reply));
-int serverSendToVim __ARGS((char_u *name, char_u *cmd, char_u **result, void *ptarget, int asExpr, int silent));
-void serverForeground __ARGS((char_u *name));
-char_u *serverGetReply __ARGS((HWND server, int *expr_res, int remove, int wait));
-void serverProcessPendingMessages __ARGS((void));
-char *charset_id2name __ARGS((int id));
-int get_logfont __ARGS((LOGFONT *lf, char_u *name, HDC printer_dc, int verbose));
+extern void mch_exit __ARGS((int r));
+extern void mch_early_init __ARGS((void));
+extern int mch_input_isatty __ARGS((void));
+extern void mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void mch_restore_title __ARGS((int which));
+extern int mch_can_restore_title __ARGS((void));
+extern int mch_can_restore_icon __ARGS((void));
+extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+extern int mch_isFullName __ARGS((char_u *fname));
+extern void slash_adjust __ARGS((char_u *p));
+extern int vim_stat __ARGS((const char *name, struct stat *stp));
+extern void mch_settmode __ARGS((int tmode));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern void mch_new_shellsize __ARGS((void));
+extern void mch_suspend __ARGS((void));
+extern void display_errors __ARGS((void));
+extern int mch_has_exp_wildcard __ARGS((char_u *p));
+extern int mch_has_wildcard __ARGS((char_u *p));
+extern int mch_chdir __ARGS((char *path));
+extern int can_end_termcap_mode __ARGS((int give_msg));
+extern int mch_screenmode __ARGS((char_u *arg));
+extern int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
+extern int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
+extern int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
+extern void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
+extern void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
+extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+extern short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
+extern char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
+extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+extern void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
+extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+extern void DumpPutS __ARGS((const char *psz));
+extern int mch_get_winpos __ARGS((int *x, int *y));
+extern void mch_set_winpos __ARGS((int x, int y));
+extern void mch_print_cleanup __ARGS((void));
+extern int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
+extern int mch_print_begin __ARGS((prt_settings_T *psettings));
+extern void mch_print_end __ARGS((prt_settings_T *psettings));
+extern int mch_print_end_page __ARGS((void));
+extern int mch_print_begin_page __ARGS((char_u *msg));
+extern int mch_print_blank_page __ARGS((void));
+extern void mch_print_start_line __ARGS((int margin, int page_line));
+extern int mch_print_text_out __ARGS((char_u *p, int len));
+extern void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
+extern void mch_print_set_bg __ARGS((unsigned long bgcol));
+extern void mch_print_set_fg __ARGS((unsigned long fgcol));
+extern char_u *mch_resolve_shortcut __ARGS((char_u *fname));
+extern void win32_set_foreground __ARGS((void));
+extern void serverInitMessaging __ARGS((void));
+extern void serverSetName __ARGS((char_u *name));
+extern char_u *serverGetVimNames __ARGS((void));
+extern int serverSendReply __ARGS((char_u *name, char_u *reply));
+extern int serverSendToVim __ARGS((char_u *name, char_u *cmd, char_u **result, void *ptarget, int asExpr, int silent));
+extern void serverForeground __ARGS((char_u *name));
+extern char_u *serverGetReply __ARGS((HWND server, int *expr_res, int remove, int wait));
+extern void serverProcessPendingMessages __ARGS((void));
+extern char *charset_id2name __ARGS((int id));
+extern int get_logfont __ARGS((LOGFONT *lf, char_u *name, HDC printer_dc, int verbose));
 /* vim: set ft=c : */
diff --git a/src/proto/os_riscos.pro b/src/proto/os_riscos.pro
index 9ea4cd5..ec8055b 100644
--- a/src/proto/os_riscos.pro
+++ b/src/proto/os_riscos.pro
@@ -1,49 +1,49 @@
 /* os_riscos.c */
-void mch_write __ARGS((char_u *s, int len));
-int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
-int mch_char_avail __ARGS((void));
-long_u mch_avail_mem __ARGS((int special));
-void mch_delay __ARGS((long msec, int ignoreinput));
-void mch_suspend __ARGS((void));
-void mch_init __ARGS((void));
-int mch_check_win __ARGS((int argc, char **argv));
-int mch_input_isatty __ARGS((void));
-int mch_can_restore_title __ARGS((void));
-int mch_can_restore_icon __ARGS((void));
-void mch_settitle __ARGS((char_u *title, char_u *icon));
-void mch_restore_title __ARGS((int which));
-int mch_get_user_name __ARGS((char_u *s, int len));
-void mch_get_host_name __ARGS((char_u *s, int len));
-long mch_get_pid __ARGS((void));
-int mch_dirname __ARGS((char_u *buf, int len));
-int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-int mch_isFullName __ARGS((char_u *fname));
-long mch_getperm __ARGS((char_u *name));
-int mch_setperm __ARGS((char_u *name, long perm));
-void mch_hide __ARGS((char_u *name));
-int mch_isdir __ARGS((char_u *name));
-int mch_can_exe __ARGS((char_u *name));
-int mch_nodetype __ARGS((char_u *name));
-void mch_early_init __ARGS((void));
-void mch_exit __ARGS((int r));
-void mch_settmode __ARGS((int tmode));
-void mch_setmouse __ARGS((int on));
-int mch_screenmode __ARGS((char_u *arg));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-void mch_new_shellsize __ARGS((void));
-int mch_call_shell __ARGS((char_u *cmd, int options));
-void mch_breakcheck __ARGS((void));
-int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
-int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
-int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-int mch_has_exp_wildcard __ARGS((char_u *p));
-int mch_has_wildcard __ARGS((char_u *p));
-int mch_remove __ARGS((char_u *file));
-char_u *mch_munge_fname __ARGS((char_u *fname));
-int ro_buflist_add __ARGS((char_u *old_name));
-int mch_chdir __ARGS((char_u *dir));
-void mch_read_filetype __ARGS((char_u *file));
-void mch_set_filetype __ARGS((char_u *file, char_u *type));
-int mch_check_filetype __ARGS((char_u *fname, char_u *type));
+extern void mch_write __ARGS((char_u *s, int len));
+extern int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+extern int mch_char_avail __ARGS((void));
+extern long_u mch_avail_mem __ARGS((int special));
+extern void mch_delay __ARGS((long msec, int ignoreinput));
+extern void mch_suspend __ARGS((void));
+extern void mch_init __ARGS((void));
+extern int mch_check_win __ARGS((int argc, char **argv));
+extern int mch_input_isatty __ARGS((void));
+extern int mch_can_restore_title __ARGS((void));
+extern int mch_can_restore_icon __ARGS((void));
+extern void mch_settitle __ARGS((char_u *title, char_u *icon));
+extern void mch_restore_title __ARGS((int which));
+extern int mch_get_user_name __ARGS((char_u *s, int len));
+extern void mch_get_host_name __ARGS((char_u *s, int len));
+extern long mch_get_pid __ARGS((void));
+extern int mch_dirname __ARGS((char_u *buf, int len));
+extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+extern int mch_isFullName __ARGS((char_u *fname));
+extern long mch_getperm __ARGS((char_u *name));
+extern int mch_setperm __ARGS((char_u *name, long perm));
+extern void mch_hide __ARGS((char_u *name));
+extern int mch_isdir __ARGS((char_u *name));
+extern int mch_can_exe __ARGS((char_u *name));
+extern int mch_nodetype __ARGS((char_u *name));
+extern void mch_early_init __ARGS((void));
+extern void mch_exit __ARGS((int r));
+extern void mch_settmode __ARGS((int tmode));
+extern void mch_setmouse __ARGS((int on));
+extern int mch_screenmode __ARGS((char_u *arg));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern void mch_new_shellsize __ARGS((void));
+extern int mch_call_shell __ARGS((char_u *cmd, int options));
+extern void mch_breakcheck __ARGS((void));
+extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+extern int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
+extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+extern int mch_has_exp_wildcard __ARGS((char_u *p));
+extern int mch_has_wildcard __ARGS((char_u *p));
+extern int mch_remove __ARGS((char_u *file));
+extern char_u *mch_munge_fname __ARGS((char_u *fname));
+extern int ro_buflist_add __ARGS((char_u *old_name));
+extern int mch_chdir __ARGS((char_u *dir));
+extern void mch_read_filetype __ARGS((char_u *file));
+extern void mch_set_filetype __ARGS((char_u *file, char_u *type));
+extern int mch_check_filetype __ARGS((char_u *fname, char_u *type));
 /* vim: set ft=c : */
diff --git a/src/proto/os_vms.pro b/src/proto/os_vms.pro
index 2ed6394..667f7ab 100644
--- a/src/proto/os_vms.pro
+++ b/src/proto/os_vms.pro
@@ -1,14 +1,14 @@
 /* os_vms.c */
-void mch_settmode __ARGS((int tmode));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-char_u *mch_getenv __ARGS((char_u *lognam));
-int mch_setenv __ARGS((char *var, char *value, int x));
-int vms_sys __ARGS((char *cmd, char *out, char *inp));
-int vms_sys_status __ARGS((int status));
-int vms_read __ARGS((char *inbuf, size_t nbytes));
-int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
-void *vms_fixfilename __ARGS((void *instring));
-void vms_remove_version __ARGS((void *fname));
+extern void mch_settmode __ARGS((int tmode));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern char_u *mch_getenv __ARGS((char_u *lognam));
+extern int mch_setenv __ARGS((char *var, char *value, int x));
+extern int vms_sys __ARGS((char *cmd, char *out, char *inp));
+extern int vms_sys_status __ARGS((int status));
+extern int vms_read __ARGS((char *inbuf, size_t nbytes));
+extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+extern void *vms_fixfilename __ARGS((void *instring));
+extern void vms_remove_version __ARGS((void *fname));
 /* vim: set ft=c : */
diff --git a/src/proto/os_win16.pro b/src/proto/os_win16.pro
index 31fa72c..4bfd9b3 100644
--- a/src/proto/os_win16.pro
+++ b/src/proto/os_win16.pro
@@ -1,12 +1,12 @@
 /* os_win16.c */
-void mch_setmouse __ARGS((int on));
-void mch_init __ARGS((void));
-int mch_check_win __ARGS((int argc, char **argv));
-long mch_get_pid __ARGS((void));
-int mch_call_shell __ARGS((char_u *cmd, int options));
-void mch_delay __ARGS((long msec, int ignoreinput));
-void mch_breakcheck __ARGS((void));
-long_u mch_avail_mem __ARGS((int special));
-int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
-char *default_shell __ARGS((void));
+extern void mch_setmouse __ARGS((int on));
+extern void mch_init __ARGS((void));
+extern int mch_check_win __ARGS((int argc, char **argv));
+extern long mch_get_pid __ARGS((void));
+extern int mch_call_shell __ARGS((char_u *cmd, int options));
+extern void mch_delay __ARGS((long msec, int ignoreinput));
+extern void mch_breakcheck __ARGS((void));
+extern long_u mch_avail_mem __ARGS((int special));
+extern int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
+extern char *default_shell __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/popupmnu.pro b/src/proto/popupmnu.pro
new file mode 100644
index 0000000..5427dad
--- /dev/null
+++ b/src/proto/popupmnu.pro
@@ -0,0 +1,8 @@
+/* popupmnu.c */
+extern void pum_display __ARGS((pumitem_T *array, int size, int selected));
+extern void pum_redraw __ARGS((void));
+extern void pum_undisplay __ARGS((void));
+extern void pum_clear __ARGS((void));
+extern int pum_visible __ARGS((void));
+extern int pum_get_height __ARGS((void));
+/* vim: set ft=c : */
diff --git a/src/proto/regexp.pro b/src/proto/regexp.pro
index df2fde4..27597b2 100644
--- a/src/proto/regexp.pro
+++ b/src/proto/regexp.pro
@@ -1,17 +1,17 @@
 /* regexp.c */
-void free_regexp_stuff __ARGS((void));
-int re_multiline __ARGS((regprog_T *prog));
-int re_lookbehind __ARGS((regprog_T *prog));
-char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
-regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
-int vim_regcomp_had_eol __ARGS((void));
-int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
-int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
-long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
-reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
-void unref_extmatch __ARGS((reg_extmatch_T *em));
-char_u *regtilde __ARGS((char_u *source, int magic));
-int vim_regsub __ARGS((regmatch_T *rmp, char_u *source, char_u *dest, int copy, int magic, int backslash));
-int vim_regsub_multi __ARGS((regmmatch_T *rmp, linenr_T lnum, char_u *source, char_u *dest, int copy, int magic, int backslash));
-char_u *reg_submatch __ARGS((int no));
+extern void free_regexp_stuff __ARGS((void));
+extern int re_multiline __ARGS((regprog_T *prog));
+extern int re_lookbehind __ARGS((regprog_T *prog));
+extern char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
+extern regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
+extern int vim_regcomp_had_eol __ARGS((void));
+extern int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
+extern int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
+extern long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
+extern reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
+extern void unref_extmatch __ARGS((reg_extmatch_T *em));
+extern char_u *regtilde __ARGS((char_u *source, int magic));
+extern int vim_regsub __ARGS((regmatch_T *rmp, char_u *source, char_u *dest, int copy, int magic, int backslash));
+extern int vim_regsub_multi __ARGS((regmmatch_T *rmp, linenr_T lnum, char_u *source, char_u *dest, int copy, int magic, int backslash));
+extern char_u *reg_submatch __ARGS((int no));
 /* vim: set ft=c : */
diff --git a/src/proto/syntax.pro b/src/proto/syntax.pro
index 1204b89..3157108 100644
--- a/src/proto/syntax.pro
+++ b/src/proto/syntax.pro
@@ -1,46 +1,46 @@
 /* syntax.c */
-void syntax_start __ARGS((win_T *wp, linenr_T lnum));
-void syn_stack_free_all __ARGS((buf_T *buf));
-void syn_stack_apply_changes __ARGS((buf_T *buf));
-void syntax_end_parsing __ARGS((linenr_T lnum));
-int syntax_check_changed __ARGS((linenr_T lnum));
-int get_syntax_attr __ARGS((colnr_T col, int *can_spell));
-void syntax_clear __ARGS((buf_T *buf));
-void ex_syntax __ARGS((exarg_T *eap));
-int syntax_present __ARGS((buf_T *buf));
-void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
-char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
-int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
-int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
-void init_highlight __ARGS((int both, int reset));
-int load_colors __ARGS((char_u *name));
-void do_highlight __ARGS((char_u *line, int forceit, int init));
-void free_highlight __ARGS((void));
-void restore_cterm_colors __ARGS((void));
-void set_normal_colors __ARGS((void));
-char_u *hl_get_font_name __ARGS((void));
-void hl_set_font_name __ARGS((char_u *font_name));
-void hl_set_bg_color_name __ARGS((char_u *name));
-void hl_set_fg_color_name __ARGS((char_u *name));
-void clear_hl_tables __ARGS((void));
-int hl_combine_attr __ARGS((int char_attr, int prim_attr));
-attrentry_T *syn_gui_attr2entry __ARGS((int attr));
-int syn_attr2attr __ARGS((int attr));
-attrentry_T *syn_term_attr2entry __ARGS((int attr));
-attrentry_T *syn_cterm_attr2entry __ARGS((int attr));
-char_u *highlight_has_attr __ARGS((int id, int flag, int modec));
-char_u *highlight_color __ARGS((int id, char_u *what, int modec));
-long_u highlight_gui_color_rgb __ARGS((int id, int fg));
-int syn_name2id __ARGS((char_u *name));
-int highlight_exists __ARGS((char_u *name));
-int syn_namen2id __ARGS((char_u *linep, int len));
-int syn_check_group __ARGS((char_u *pp, int len));
-int syn_id2attr __ARGS((int hl_id));
-int syn_id2colors __ARGS((int hl_id, guicolor_T *fgp, guicolor_T *bgp));
-int syn_get_final_id __ARGS((int hl_id));
-void highlight_gui_started __ARGS((void));
-int highlight_changed __ARGS((void));
-void set_context_in_highlight_cmd __ARGS((expand_T *xp, char_u *arg));
-char_u *get_highlight_name __ARGS((expand_T *xp, int idx));
-void free_highlight_fonts __ARGS((void));
+extern void syntax_start __ARGS((win_T *wp, linenr_T lnum));
+extern void syn_stack_free_all __ARGS((buf_T *buf));
+extern void syn_stack_apply_changes __ARGS((buf_T *buf));
+extern void syntax_end_parsing __ARGS((linenr_T lnum));
+extern int syntax_check_changed __ARGS((linenr_T lnum));
+extern int get_syntax_attr __ARGS((colnr_T col, int *can_spell));
+extern void syntax_clear __ARGS((buf_T *buf));
+extern void ex_syntax __ARGS((exarg_T *eap));
+extern int syntax_present __ARGS((buf_T *buf));
+extern void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
+extern char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
+extern int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
+extern int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
+extern void init_highlight __ARGS((int both, int reset));
+extern int load_colors __ARGS((char_u *name));
+extern void do_highlight __ARGS((char_u *line, int forceit, int init));
+extern void free_highlight __ARGS((void));
+extern void restore_cterm_colors __ARGS((void));
+extern void set_normal_colors __ARGS((void));
+extern char_u *hl_get_font_name __ARGS((void));
+extern void hl_set_font_name __ARGS((char_u *font_name));
+extern void hl_set_bg_color_name __ARGS((char_u *name));
+extern void hl_set_fg_color_name __ARGS((char_u *name));
+extern void clear_hl_tables __ARGS((void));
+extern int hl_combine_attr __ARGS((int char_attr, int prim_attr));
+extern attrentry_T *syn_gui_attr2entry __ARGS((int attr));
+extern int syn_attr2attr __ARGS((int attr));
+extern attrentry_T *syn_term_attr2entry __ARGS((int attr));
+extern attrentry_T *syn_cterm_attr2entry __ARGS((int attr));
+extern char_u *highlight_has_attr __ARGS((int id, int flag, int modec));
+extern char_u *highlight_color __ARGS((int id, char_u *what, int modec));
+extern long_u highlight_gui_color_rgb __ARGS((int id, int fg));
+extern int syn_name2id __ARGS((char_u *name));
+extern int highlight_exists __ARGS((char_u *name));
+extern int syn_namen2id __ARGS((char_u *linep, int len));
+extern int syn_check_group __ARGS((char_u *pp, int len));
+extern int syn_id2attr __ARGS((int hl_id));
+extern int syn_id2colors __ARGS((int hl_id, guicolor_T *fgp, guicolor_T *bgp));
+extern int syn_get_final_id __ARGS((int hl_id));
+extern void highlight_gui_started __ARGS((void));
+extern int highlight_changed __ARGS((void));
+extern void set_context_in_highlight_cmd __ARGS((expand_T *xp, char_u *arg));
+extern char_u *get_highlight_name __ARGS((expand_T *xp, int idx));
+extern void free_highlight_fonts __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/undo.pro b/src/proto/undo.pro
index 58c6db8..ab70735 100644
--- a/src/proto/undo.pro
+++ b/src/proto/undo.pro
@@ -1,21 +1,21 @@
 /* undo.c */
-int u_save_cursor __ARGS((void));
-int u_save __ARGS((linenr_T top, linenr_T bot));
-int u_savesub __ARGS((linenr_T lnum));
-int u_inssub __ARGS((linenr_T lnum));
-int u_savedel __ARGS((linenr_T lnum, long nlines));
-void u_undo __ARGS((int count));
-void u_redo __ARGS((int count));
-void undo_time __ARGS((long step, int sec, int absolute));
-void u_sync __ARGS((void));
-void ex_undolist __ARGS((exarg_T *eap));
-void ex_undojoin __ARGS((exarg_T *eap));
-void u_unchanged __ARGS((buf_T *buf));
-void u_clearall __ARGS((buf_T *buf));
-void u_saveline __ARGS((linenr_T lnum));
-void u_clearline __ARGS((void));
-void u_undoline __ARGS((void));
-void u_blockfree __ARGS((buf_T *buf));
-int bufIsChanged __ARGS((buf_T *buf));
-int curbufIsChanged __ARGS((void));
+extern int u_save_cursor __ARGS((void));
+extern int u_save __ARGS((linenr_T top, linenr_T bot));
+extern int u_savesub __ARGS((linenr_T lnum));
+extern int u_inssub __ARGS((linenr_T lnum));
+extern int u_savedel __ARGS((linenr_T lnum, long nlines));
+extern void u_undo __ARGS((int count));
+extern void u_redo __ARGS((int count));
+extern void undo_time __ARGS((long step, int sec, int absolute));
+extern void u_sync __ARGS((void));
+extern void ex_undolist __ARGS((exarg_T *eap));
+extern void ex_undojoin __ARGS((exarg_T *eap));
+extern void u_unchanged __ARGS((buf_T *buf));
+extern void u_clearall __ARGS((buf_T *buf));
+extern void u_saveline __ARGS((linenr_T lnum));
+extern void u_clearline __ARGS((void));
+extern void u_undoline __ARGS((void));
+extern void u_blockfree __ARGS((buf_T *buf));
+extern int bufIsChanged __ARGS((buf_T *buf));
+extern int curbufIsChanged __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/version.pro b/src/proto/version.pro
index 3f371f9..00ca916 100644
--- a/src/proto/version.pro
+++ b/src/proto/version.pro
@@ -1,9 +1,9 @@
 /* version.c */
-void make_version __ARGS((void));
-int highest_patch __ARGS((void));
-int has_patch __ARGS((int n));
-void ex_version __ARGS((exarg_T *eap));
-void list_version __ARGS((void));
-void intro_message __ARGS((int colon));
-void ex_intro __ARGS((exarg_T *eap));
+extern void make_version __ARGS((void));
+extern int highest_patch __ARGS((void));
+extern int has_patch __ARGS((int n));
+extern void ex_version __ARGS((exarg_T *eap));
+extern void list_version __ARGS((void));
+extern void intro_message __ARGS((int colon));
+extern void ex_intro __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
diff --git a/src/proto/window.pro b/src/proto/window.pro
index 629ced3..362f00a 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -1,59 +1,59 @@
 /* window.c */
-void do_window __ARGS((int nchar, long Prenum, int xchar));
-int win_split __ARGS((int size, int flags));
-int win_valid __ARGS((win_T *win));
-int win_count __ARGS((void));
-int make_windows __ARGS((int count, int vertical));
-void win_move_after __ARGS((win_T *win1, win_T *win2));
-void win_equal __ARGS((win_T *next_curwin, int current, int dir));
-void close_windows __ARGS((buf_T *buf, int keep_curwin));
-void win_close __ARGS((win_T *win, int free_buf));
-void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
-void win_free_all __ARGS((void));
-void close_others __ARGS((int message, int forceit));
-void curwin_init __ARGS((void));
-int win_alloc_first __ARGS((void));
-void win_init_size __ARGS((void));
-int win_new_tabpage __ARGS((int after));
-int may_open_tabpage __ARGS((void));
-int make_tabpages __ARGS((int maxcount));
-int valid_tabpage __ARGS((tabpage_T *tpc));
-tabpage_T *find_tabpage __ARGS((int n));
-int tabpage_index __ARGS((tabpage_T *ftp));
-void goto_tabpage __ARGS((int n));
-void goto_tabpage_tp __ARGS((tabpage_T *tp));
-void tabpage_move __ARGS((int nr));
-void win_goto __ARGS((win_T *wp));
-win_T *win_find_nr __ARGS((int winnr));
-void win_enter __ARGS((win_T *wp, int undo_sync));
-win_T *buf_jump_open_win __ARGS((buf_T *buf));
-int win_alloc_lines __ARGS((win_T *wp));
-void win_free_lsize __ARGS((win_T *wp));
-void shell_new_rows __ARGS((void));
-void shell_new_columns __ARGS((void));
-void win_size_save __ARGS((garray_T *gap));
-void win_size_restore __ARGS((garray_T *gap));
-int win_comp_pos __ARGS((void));
-void win_setheight __ARGS((int height));
-void win_setheight_win __ARGS((int height, win_T *win));
-void win_setwidth __ARGS((int width));
-void win_setwidth_win __ARGS((int width, win_T *wp));
-void win_setminheight __ARGS((void));
-void win_drag_status_line __ARGS((win_T *dragwin, int offset));
-void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
-void win_comp_scroll __ARGS((win_T *wp));
-void command_height __ARGS((long old_p_ch));
-void last_status __ARGS((int morewin));
-int tabline_height __ARGS((void));
-char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum));
-char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum));
-char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum));
-char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname));
-int path_with_url __ARGS((char_u *fname));
-int vim_isAbsName __ARGS((char_u *name));
-int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-int min_rows __ARGS((void));
-int only_one_window __ARGS((void));
-void check_lnums __ARGS((int do_curwin));
-int win_hasvertsplit __ARGS((void));
+extern void do_window __ARGS((int nchar, long Prenum, int xchar));
+extern int win_split __ARGS((int size, int flags));
+extern int win_valid __ARGS((win_T *win));
+extern int win_count __ARGS((void));
+extern int make_windows __ARGS((int count, int vertical));
+extern void win_move_after __ARGS((win_T *win1, win_T *win2));
+extern void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+extern void close_windows __ARGS((buf_T *buf, int keep_curwin));
+extern void win_close __ARGS((win_T *win, int free_buf));
+extern void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+extern void win_free_all __ARGS((void));
+extern void close_others __ARGS((int message, int forceit));
+extern void curwin_init __ARGS((void));
+extern int win_alloc_first __ARGS((void));
+extern void win_init_size __ARGS((void));
+extern int win_new_tabpage __ARGS((int after));
+extern int may_open_tabpage __ARGS((void));
+extern int make_tabpages __ARGS((int maxcount));
+extern int valid_tabpage __ARGS((tabpage_T *tpc));
+extern tabpage_T *find_tabpage __ARGS((int n));
+extern int tabpage_index __ARGS((tabpage_T *ftp));
+extern void goto_tabpage __ARGS((int n));
+extern void goto_tabpage_tp __ARGS((tabpage_T *tp));
+extern void tabpage_move __ARGS((int nr));
+extern void win_goto __ARGS((win_T *wp));
+extern win_T *win_find_nr __ARGS((int winnr));
+extern void win_enter __ARGS((win_T *wp, int undo_sync));
+extern win_T *buf_jump_open_win __ARGS((buf_T *buf));
+extern int win_alloc_lines __ARGS((win_T *wp));
+extern void win_free_lsize __ARGS((win_T *wp));
+extern void shell_new_rows __ARGS((void));
+extern void shell_new_columns __ARGS((void));
+extern void win_size_save __ARGS((garray_T *gap));
+extern void win_size_restore __ARGS((garray_T *gap));
+extern int win_comp_pos __ARGS((void));
+extern void win_setheight __ARGS((int height));
+extern void win_setheight_win __ARGS((int height, win_T *win));
+extern void win_setwidth __ARGS((int width));
+extern void win_setwidth_win __ARGS((int width, win_T *wp));
+extern void win_setminheight __ARGS((void));
+extern void win_drag_status_line __ARGS((win_T *dragwin, int offset));
+extern void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
+extern void win_comp_scroll __ARGS((win_T *wp));
+extern void command_height __ARGS((long old_p_ch));
+extern void last_status __ARGS((int morewin));
+extern int tabline_height __ARGS((void));
+extern char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum));
+extern char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum));
+extern char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum));
+extern char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname));
+extern int path_with_url __ARGS((char_u *fname));
+extern int vim_isAbsName __ARGS((char_u *name));
+extern int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+extern int min_rows __ARGS((void));
+extern int only_one_window __ARGS((void));
+extern void check_lnums __ARGS((int do_curwin));
+extern int win_hasvertsplit __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/workshop.pro b/src/proto/workshop.pro
index 426fded..c72e215 100644
--- a/src/proto/workshop.pro
+++ b/src/proto/workshop.pro
@@ -1,49 +1,49 @@
 /* workshop.c */
-void workshop_init __ARGS((void));
-void workshop_postinit __ARGS((void));
-void ex_wsverb __ARGS((exarg_T *eap));
-char *workshop_get_editor_name __ARGS((void));
-char *workshop_get_editor_version __ARGS((void));
-void workshop_load_file __ARGS((char *filename, int line, char *frameid));
-void workshop_reload_file __ARGS((char *filename, int line));
-void workshop_show_file __ARGS((char *filename));
-void workshop_goto_line __ARGS((char *filename, int lineno));
-void workshop_front_file __ARGS((char *filename));
-void workshop_save_file __ARGS((char *filename));
-void workshop_save_files __ARGS((void));
-void workshop_quit __ARGS((void));
-void workshop_minimize __ARGS((void));
-void workshop_maximize __ARGS((void));
-void workshop_add_mark_type __ARGS((int idx, char *colorspec, char *sign));
-void workshop_set_mark __ARGS((char *filename, int lineno, int markId, int idx));
-void workshop_change_mark_type __ARGS((char *filename, int markId, int idx));
-void workshop_goto_mark __ARGS((char *filename, int markId, char *message));
-void workshop_delete_mark __ARGS((char *filename, int markId));
-int workshop_get_mark_lineno __ARGS((char *filename, int markId));
-void workshop_moved_marks __ARGS((char *filename));
-int workshop_get_font_height __ARGS((void));
-void workshop_footer_message __ARGS((char *message, int severity));
-void workshop_menu_begin __ARGS((char *label));
-void workshop_submenu_begin __ARGS((char *label));
-void workshop_submenu_end __ARGS((void));
-void workshop_menu_item __ARGS((char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive));
-void workshop_menu_end __ARGS((void));
-void workshop_toolbar_begin __ARGS((void));
-void workshop_toolbar_end __ARGS((void));
-void workshop_toolbar_button __ARGS((char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left));
-void workshop_frame_sensitivities __ARGS((VerbSense *vs));
-void workshop_set_option __ARGS((char *option, char *value));
-void workshop_balloon_mode __ARGS((Boolean on));
-void workshop_balloon_delay __ARGS((int delay));
-void workshop_show_balloon_tip __ARGS((char *tip));
-void workshop_hotkeys __ARGS((Boolean on));
-int workshop_get_positions __ARGS((void *clientData, char **filename, int *curLine, int *curCol, int *selStartLine, int *selStartCol, int *selEndLine, int *selEndCol, int *selLength, char **selection));
-char *workshop_test_getcurrentfile __ARGS((void));
-int workshop_test_getcursorrow __ARGS((void));
-int workshop_test_getcursorcol __ARGS((void));
-char *workshop_test_getcursorrowtext __ARGS((void));
-char *workshop_test_getselectedtext __ARGS((void));
-void workshop_save_sensitivity __ARGS((char *filename));
-void workshop_beval_cb __ARGS((BalloonEval *beval, int state));
-void findYourself __ARGS((char *argv0));
+extern void workshop_init __ARGS((void));
+extern void workshop_postinit __ARGS((void));
+extern void ex_wsverb __ARGS((exarg_T *eap));
+extern char *workshop_get_editor_name __ARGS((void));
+extern char *workshop_get_editor_version __ARGS((void));
+extern void workshop_load_file __ARGS((char *filename, int line, char *frameid));
+extern void workshop_reload_file __ARGS((char *filename, int line));
+extern void workshop_show_file __ARGS((char *filename));
+extern void workshop_goto_line __ARGS((char *filename, int lineno));
+extern void workshop_front_file __ARGS((char *filename));
+extern void workshop_save_file __ARGS((char *filename));
+extern void workshop_save_files __ARGS((void));
+extern void workshop_quit __ARGS((void));
+extern void workshop_minimize __ARGS((void));
+extern void workshop_maximize __ARGS((void));
+extern void workshop_add_mark_type __ARGS((int idx, char *colorspec, char *sign));
+extern void workshop_set_mark __ARGS((char *filename, int lineno, int markId, int idx));
+extern void workshop_change_mark_type __ARGS((char *filename, int markId, int idx));
+extern void workshop_goto_mark __ARGS((char *filename, int markId, char *message));
+extern void workshop_delete_mark __ARGS((char *filename, int markId));
+extern int workshop_get_mark_lineno __ARGS((char *filename, int markId));
+extern void workshop_moved_marks __ARGS((char *filename));
+extern int workshop_get_font_height __ARGS((void));
+extern void workshop_footer_message __ARGS((char *message, int severity));
+extern void workshop_menu_begin __ARGS((char *label));
+extern void workshop_submenu_begin __ARGS((char *label));
+extern void workshop_submenu_end __ARGS((void));
+extern void workshop_menu_item __ARGS((char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive));
+extern void workshop_menu_end __ARGS((void));
+extern void workshop_toolbar_begin __ARGS((void));
+extern void workshop_toolbar_end __ARGS((void));
+extern void workshop_toolbar_button __ARGS((char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left));
+extern void workshop_frame_sensitivities __ARGS((VerbSense *vs));
+extern void workshop_set_option __ARGS((char *option, char *value));
+extern void workshop_balloon_mode __ARGS((Boolean on));
+extern void workshop_balloon_delay __ARGS((int delay));
+extern void workshop_show_balloon_tip __ARGS((char *tip));
+extern void workshop_hotkeys __ARGS((Boolean on));
+extern int workshop_get_positions __ARGS((void *clientData, char **filename, int *curLine, int *curCol, int *selStartLine, int *selStartCol, int *selEndLine, int *selEndCol, int *selLength, char **selection));
+extern char *workshop_test_getcurrentfile __ARGS((void));
+extern int workshop_test_getcursorrow __ARGS((void));
+extern int workshop_test_getcursorcol __ARGS((void));
+extern char *workshop_test_getcursorrowtext __ARGS((void));
+extern char *workshop_test_getselectedtext __ARGS((void));
+extern void workshop_save_sensitivity __ARGS((char *filename));
+extern void workshop_beval_cb __ARGS((BalloonEval *beval, int state));
+extern void findYourself __ARGS((char *argv0));
 /* vim: set ft=c : */
diff --git a/src/tag.c b/src/tag.c
index 98a2c9b..6c8888c 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -3835,15 +3835,16 @@
 			char_u	*s, *n;
 			int	len;
 
-			/* Add extra field as a dict entry. */
+			/* Add extra field as a dict entry.  Fields are
+			 * separated by Tabs. */
 			n = p;
-			while (*p != NUL && *p > ' ' && *p < 127 && *p != ':')
+			while (*p != NUL && *p >= ' ' && *p < 127 && *p != ':')
 			    ++p;
 			len = p - n;
 			if (*p == ':' && len > 0)
 			{
 			    s = ++p;
-			    while (*p != NUL && *p > ' ' && *p < 127)
+			    while (*p != NUL && *p >= ' ' && *p < 127)
 				++p;
 			    n[len] = NUL;
 			    if (add_tag_field(dict, (char *)n, s, p) == FAIL)
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index 66c9f9f..eec1f9b 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -37,7 +37,7 @@
 nongui:	fixff $(SCRIPTS16) $(SCRIPTS)
 	echo ALL DONE
 
-small:	fixff $(SCRIPTS16)
+small:
 	echo ALL DONE
 
 gui:	fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI)
diff --git a/src/version.h b/src/version.h
index f3a87f7..cef0851 100644
--- a/src/version.h
+++ b/src/version.h
@@ -19,13 +19,13 @@
 #define VIM_VERSION_MINOR_STR		"0"
 #define VIM_VERSION_100	    (VIM_VERSION_MAJOR * 100 + VIM_VERSION_MINOR)
 
-#define VIM_VERSION_BUILD		 256
-#define VIM_VERSION_BUILD_BCD		0x100
-#define VIM_VERSION_BUILD_STR		"256"
+#define VIM_VERSION_BUILD		 257
+#define VIM_VERSION_BUILD_BCD		0x101
+#define VIM_VERSION_BUILD_STR		"257"
 #define VIM_VERSION_PATCHLEVEL		 0
 #define VIM_VERSION_PATCHLEVEL_STR	"0"
 /* Used by MacOS port should be one of: development, alpha, beta, final */
-#define VIM_VERSION_RELEASE		alpha
+#define VIM_VERSION_RELEASE		beta
 
 /*
  * VIM_VERSION_NODOT is used for the runtime directory name.
@@ -33,8 +33,8 @@
  * VIM_VERSION_MEDIUM is used for the startup-screen.
  * VIM_VERSION_LONG is used for the ":version" command and "Vim -h".
  */
-#define VIM_VERSION_NODOT	"vim70aa"
-#define VIM_VERSION_SHORT	"7.0aa"
-#define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 23)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 23, compiled "
+#define VIM_VERSION_NODOT	"vim70b"
+#define VIM_VERSION_SHORT	"7.0b"
+#define VIM_VERSION_MEDIUM	"7.0b BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0b BETA (2006 Mar 24)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0b BETA (2006 Mar 24, compiled "
diff --git a/src/vim.h b/src/vim.h
index 1e4ae42..237383f 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1723,7 +1723,7 @@
 # define stat(a,b) (access(a,0) ? -1 : stat(a,b))
 #endif
 
-#if defined(FEAT_PROFILE) || defined(FEAT_RELTIME)
+#if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
 # ifdef WIN3264
 typedef LARGE_INTEGER proftime_T;
 # else
