diff --git a/src/Makefile b/src/Makefile
index 783d87f..375b598 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1305,8 +1305,9 @@
 
 PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
 POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
+NOPROTO_DEFS = $(PYTHON_NOPROTO)
 
-ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
+ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS) $(NOPROTO_DEFS)
 
 # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
 # with "-E".
@@ -2678,313 +2679,321 @@
 ###############################################################################
 ### (automatically generated by 'make depend')
 ### Dependencies:
+objects/blowfish.o: blowfish.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/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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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 ./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
+ 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 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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/sha256.o: sha256.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/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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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 \
-  ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm ../pixmaps/tb_copy.xpm \
-  ../pixmaps/tb_paste.xpm ../pixmaps/tb_find.xpm \
-  ../pixmaps/tb_find_next.xpm ../pixmaps/tb_find_prev.xpm \
-  ../pixmaps/tb_find_help.xpm ../pixmaps/tb_exit.xpm \
-  ../pixmaps/tb_undo.xpm ../pixmaps/tb_redo.xpm ../pixmaps/tb_help.xpm \
-  ../pixmaps/tb_macro.xpm ../pixmaps/tb_make.xpm \
-  ../pixmaps/tb_save_all.xpm ../pixmaps/tb_jump.xpm \
-  ../pixmaps/tb_ctags.xpm ../pixmaps/tb_load_session.xpm \
-  ../pixmaps/tb_save_session.xpm ../pixmaps/tb_new_session.xpm \
-  ../pixmaps/tb_blank.xpm ../pixmaps/tb_maximize.xpm \
-  ../pixmaps/tb_split.xpm ../pixmaps/tb_minimize.xpm \
-  ../pixmaps/tb_shell.xpm ../pixmaps/tb_replace.xpm \
-  ../pixmaps/tb_vsplit.xpm ../pixmaps/tb_maxwidth.xpm \
-  ../pixmaps/tb_minwidth.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 \
+ ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm ../pixmaps/tb_copy.xpm \
+ ../pixmaps/tb_paste.xpm ../pixmaps/tb_find.xpm \
+ ../pixmaps/tb_find_next.xpm ../pixmaps/tb_find_prev.xpm \
+ ../pixmaps/tb_find_help.xpm ../pixmaps/tb_exit.xpm \
+ ../pixmaps/tb_undo.xpm ../pixmaps/tb_redo.xpm ../pixmaps/tb_help.xpm \
+ ../pixmaps/tb_macro.xpm ../pixmaps/tb_make.xpm \
+ ../pixmaps/tb_save_all.xpm ../pixmaps/tb_jump.xpm \
+ ../pixmaps/tb_ctags.xpm ../pixmaps/tb_load_session.xpm \
+ ../pixmaps/tb_save_session.xpm ../pixmaps/tb_new_session.xpm \
+ ../pixmaps/tb_blank.xpm ../pixmaps/tb_maximize.xpm \
+ ../pixmaps/tb_split.xpm ../pixmaps/tb_minimize.xpm \
+ ../pixmaps/tb_shell.xpm ../pixmaps/tb_replace.xpm \
+ ../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 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
+ 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 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
+ 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 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 \
-  ../pixmaps/tb_find_next.xpm ../pixmaps/tb_find_prev.xpm \
-  ../pixmaps/tb_find_help.xpm ../pixmaps/tb_exit.xpm \
-  ../pixmaps/tb_undo.xpm ../pixmaps/tb_redo.xpm ../pixmaps/tb_help.xpm \
-  ../pixmaps/tb_macro.xpm ../pixmaps/tb_make.xpm \
-  ../pixmaps/tb_save_all.xpm ../pixmaps/tb_jump.xpm \
-  ../pixmaps/tb_ctags.xpm ../pixmaps/tb_load_session.xpm \
-  ../pixmaps/tb_save_session.xpm ../pixmaps/tb_new_session.xpm \
-  ../pixmaps/tb_blank.xpm ../pixmaps/tb_maximize.xpm \
-  ../pixmaps/tb_split.xpm ../pixmaps/tb_minimize.xpm \
-  ../pixmaps/tb_shell.xpm ../pixmaps/tb_replace.xpm \
-  ../pixmaps/tb_vsplit.xpm ../pixmaps/tb_maxwidth.xpm \
-  ../pixmaps/tb_minwidth.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_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 \
+ ../pixmaps/tb_find_next.xpm ../pixmaps/tb_find_prev.xpm \
+ ../pixmaps/tb_find_help.xpm ../pixmaps/tb_exit.xpm \
+ ../pixmaps/tb_undo.xpm ../pixmaps/tb_redo.xpm ../pixmaps/tb_help.xpm \
+ ../pixmaps/tb_macro.xpm ../pixmaps/tb_make.xpm \
+ ../pixmaps/tb_save_all.xpm ../pixmaps/tb_jump.xpm \
+ ../pixmaps/tb_ctags.xpm ../pixmaps/tb_load_session.xpm \
+ ../pixmaps/tb_save_session.xpm ../pixmaps/tb_new_session.xpm \
+ ../pixmaps/tb_blank.xpm ../pixmaps/tb_maximize.xpm \
+ ../pixmaps/tb_split.xpm ../pixmaps/tb_minimize.xpm \
+ ../pixmaps/tb_shell.xpm ../pixmaps/tb_replace.xpm \
+ ../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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 ./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
+ 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 mzscheme_base.c
+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 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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 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
+ 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/buffer.c b/src/buffer.c
index 0569f16..531e4b9 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -636,8 +636,7 @@
     buf_delete_signs(buf);		/* delete any signs */
 #endif
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
-        netbeans_file_killed(buf);
+    netbeans_file_killed(buf);
 #endif
 #ifdef FEAT_LOCALMAP
     map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE);  /* clear local mappings */
@@ -1447,8 +1446,7 @@
 
 #ifdef FEAT_NETBEANS_INTG
     /* Send fileOpened event because we've changed buffers. */
-    if (usingNetbeans && isNetbeansBuffer(curbuf))
-	netbeans_file_activated(curbuf);
+    netbeans_file_activated(curbuf);
 #endif
 
     /* Change directories when the 'acd' option is set. */
diff --git a/src/edit.c b/src/edit.c
index a80f196..b5c5d44 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -6267,7 +6267,7 @@
 #ifdef FEAT_SIGNS
 	if (curwin->w_buffer->b_signlist != NULL
 # ifdef FEAT_NETBEANS_INTG
-			    || usingNetbeans
+			    || netbeans_active()
 # endif
 		    )
 	    textwidth -= 1;
@@ -9431,7 +9431,7 @@
 			replace_join(repl_off);
 	    }
 #ifdef FEAT_NETBEANS_INTG
-	    if (usingNetbeans)
+	    if (netbeans_active())
 	    {
 		netbeans_removed(curbuf, fpos.lnum, cursor->col, (long)(i + 1));
 		netbeans_inserted(curbuf, fpos.lnum, cursor->col,
diff --git a/src/eval.c b/src/eval.c
index df116ad..446df8e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -12093,7 +12093,7 @@
 #endif
 #ifdef FEAT_NETBEANS_INTG
 	else if (STRICMP(name, "netbeans_enabled") == 0)
-	    n = usingNetbeans;
+	    n = netbeans_active();
 #endif
     }
 
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index bcbcc8b..2df5a4a 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3822,7 +3822,7 @@
 	    workshop_file_opened((char *)curbuf->b_ffname, curbuf->b_p_ro);
 # endif
 # ifdef FEAT_NETBEANS_INTG
-	if (usingNetbeans && ((flags & ECMD_SET_HELP) != ECMD_SET_HELP))
+	if ((flags & ECMD_SET_HELP) != ECMD_SET_HELP)
 	    netbeans_file_opened(curbuf);
 # endif
     }
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 488feae..1ef885a 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -621,6 +621,10 @@
 			RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_nbkey,		"nbkey",	ex_nbkey,
 			EXTRA|NOTADR|NEEDARG),
+EX(CMD_nbclose,		"nbclose",	ex_nbclose,
+			TRLBAR|CMDWIN),
+EX(CMD_nbstart,		"nbstart",	ex_nbstart,
+			WORD1|TRLBAR|CMDWIN),
 EX(CMD_new,		"new",		ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_nmap,		"nmap",		ex_map,
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index fd7471d..ff39040 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -439,7 +439,9 @@
 # define ex_wsverb		ex_ni
 #endif
 #ifndef FEAT_NETBEANS_INTG
+# define ex_nbclose		ex_ni
 # define ex_nbkey		ex_ni
+# define ex_nbstart		ex_ni
 #endif
 
 #ifndef FEAT_EVAL
diff --git a/src/fileio.c b/src/fileio.c
index 8cf799d..7a697ee 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3309,7 +3309,7 @@
 #endif
 
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans && isNetbeansBuffer(buf))
+    if (netbeans_active() && isNetbeansBuffer(buf))
     {
 	if (whole)
 	{
diff --git a/src/getchar.c b/src/getchar.c
index ca0cca7..0d19957 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2941,8 +2941,7 @@
 
 #if defined(FEAT_NETBEANS_INTG)
 	/* Process the queued netbeans messages. */
-	if (usingNetbeans)
-	    netbeans_parse_messages();
+        netbeans_parse_messages();
 #endif
 
 	if (got_int || (script_char = getc(scriptin[curscript])) < 0)
diff --git a/src/globals.h b/src/globals.h
index a65a2e3..b085bcb 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1369,7 +1369,6 @@
 EXTERN int netbeansForcedQuit INIT(= 0);/* don't write modified files */
 EXTERN int netbeansReadFile INIT(= 1);	/* OK to read from disk if != 0 */
 EXTERN int netbeansSuppressNoLines INIT(= 0); /* skip "No lines in buffer" */
-EXTERN int usingNetbeans INIT(= 0);	/* set if -nb flag is used */
 #endif
 
 /*
diff --git a/src/gui.c b/src/gui.c
index 0b69689..fab312f 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4781,8 +4781,7 @@
 	msg_clr_eos_force();
 	gui_start();
 #ifdef FEAT_NETBEANS_INTG
-	if (usingNetbeans)
-	    netbeans_gui_register();
+	netbeans_gui_register();
 #endif
     }
     if (!ends_excmd(*eap->arg))
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 4caf0bb..48ba0b9 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -567,7 +567,6 @@
 #endif
 #ifdef FEAT_NETBEANS_INTG
 		case ARG_NETBEANS:
-		    ++usingNetbeans;
 		    gui.dofork = FALSE; /* don't fork() when starting GUI */
 		    netbeansArg = argv[i];
 		    break;
@@ -6596,8 +6595,7 @@
 
 #if defined(FEAT_NETBEANS_INTG)
 	/* Process the queued netbeans messages. */
-	if (usingNetbeans)
-	    netbeans_parse_messages();
+        netbeans_parse_messages();
 #endif
 
 	/*
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 3331d54..af84f72 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1278,24 +1278,12 @@
 	for (arg = 1; arg < *argc; arg++)
 	    if (strncmp("-nb", argv[arg], 3) == 0)
 	    {
-		usingNetbeans++;
 		netbeansArg = argv[arg];
 		mch_memmove(&argv[arg], &argv[arg + 1],
 					    (--*argc - arg) * sizeof(char *));
 		argv[*argc] = NULL;
 		break;	/* enough? */
 	    }
-
-	if (usingNetbeans)
-	{
-	    WSADATA wsaData;
-	    int wsaerr;
-
-	    /* Init WinSock */
-	    wsaerr = WSAStartup(MAKEWORD(2, 2), &wsaData);
-	    if (wsaerr == 0)
-		WSInitialized = TRUE;
-	}
     }
 #endif
 
@@ -4840,6 +4828,9 @@
     int y;
     int x;
 
+    if (!netbeans_active())
+        return;
+
     x = 0;
     y = TEXT_Y(row);
 
@@ -4854,4 +4845,21 @@
     SetPixel(s_hdc, x+3, y++, gui.currFgColor);
     SetPixel(s_hdc, x+2, y, gui.currFgColor);
 }
+
+/*
+ * Initialize the Winsock dll.
+ */
+    void
+netbeans_init_winsock()
+{
+    WSADATA wsaData;
+    int wsaerr;
+
+    if (WSInitialized)
+        return;
+
+    wsaerr = WSAStartup(MAKEWORD(2, 2), &wsaData);
+    if (wsaerr == 0)
+        WSInitialized = TRUE;
+}
 #endif
diff --git a/src/gui_w48.c b/src/gui_w48.c
index b1ea568..2f36739 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1999,8 +1999,7 @@
 
 #ifdef FEAT_NETBEANS_INTG
 	/* Process the queued netbeans messages. */
-	if (usingNetbeans)
-	    netbeans_parse_messages();
+        netbeans_parse_messages();
 #endif
 
 	/*
diff --git a/src/gui_x11.c b/src/gui_x11.c
index 522f923..8b37272 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -710,7 +710,7 @@
     }
 #endif
 #if defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI_MOTIF)
-    if (usingNetbeans)
+    if (netbeans_active())
     {
 	XRectangle  rec;
 
@@ -1253,7 +1253,6 @@
 #ifdef FEAT_NETBEANS_INTG
 	    if (strncmp("-nb", argv[arg], 3) == 0)
 	{
-	    usingNetbeans++;
 	    gui.dofork = FALSE;	/* don't fork() when starting GUI */
 	    netbeansArg = argv[arg];
 	    mch_memmove(&argv[arg], &argv[arg + 1],
diff --git a/src/main.c b/src/main.c
index 14921ff..cba40ea 100644
--- a/src/main.c
+++ b/src/main.c
@@ -932,7 +932,7 @@
 	stuffcharReadbuff(K_NOP);
 
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
+    if (netbeansArg != NULL && strncmp("-nb", netbeansArg, 3) == 0)
     {
 # ifdef FEAT_GUI
 #  if !defined(FEAT_GUI_MOTIF) && !defined(FEAT_GUI_GTK)  \
@@ -945,7 +945,7 @@
 #  endif
 # endif
 	/* Tell the client that it can start sending commands. */
-	netbeans_startup_done();
+	netbeans_open(netbeansArg + 3, TRUE);
     }
 #endif
 
@@ -1891,7 +1891,6 @@
 		/* checking for "-nb", netbeans parameters */
 		if (argv[0][argv_idx] == 'b')
 		{
-		    ++usingNetbeans;
 		    netbeansArg = argv[0];
 		    argv_idx = -1;	    /* skip to next argument */
 		}
@@ -2385,7 +2384,7 @@
 	 * input buffer so fast I can't even kill the process in under 2
 	 * minutes (and it beeps continuously the whole time :-)
 	 */
-	if (usingNetbeans && (!parmp->stdout_isatty || !input_isatty))
+	if (netbeans_active() && (!parmp->stdout_isatty || !input_isatty))
 	{
 	    mch_errmsg(_("Vim: Error: Failure to start gvim from NetBeans\n"));
 	    exit(1);
diff --git a/src/memline.c b/src/memline.c
index 145c2a8..b3c1727 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2753,7 +2753,7 @@
     ml_updatechunk(buf, lnum + 1, (long)len, ML_CHNK_ADDLINE);
 #endif
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
+    if (netbeans_active())
     {
 	if (STRLEN(line) > 0)
 	    netbeans_inserted(buf, lnum+1, (colnr_T)0, line, (int)STRLEN(line));
@@ -2791,7 +2791,7 @@
     if (copy && (line = vim_strsave(line)) == NULL) /* allocate memory */
 	return FAIL;
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
+    if (netbeans_active())
     {
 	netbeans_removed(curbuf, lnum, 0, (long)STRLEN(ml_get(lnum)));
 	netbeans_inserted(curbuf, lnum, 0, line, (int)STRLEN(line));
@@ -2896,7 +2896,7 @@
 	line_size = ((dp->db_index[idx - 1]) & DB_INDEX_MASK) - line_start;
 
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
+    if (netbeans_active())
 	netbeans_removed(buf, lnum, 0, (long)line_size);
 #endif
 
diff --git a/src/misc1.c b/src/misc1.c
index 69bfe7d..3f8a044 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2277,7 +2277,7 @@
      * care of notifiying Netbeans.
      */
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
+    if (netbeans_active())
 	was_alloced = FALSE;
     else
 #endif
diff --git a/src/move.c b/src/move.c
index 4bdb694..cdc8c14 100644
--- a/src/move.c
+++ b/src/move.c
@@ -933,8 +933,8 @@
 #ifdef FEAT_SIGNS
 	    + (
 # ifdef FEAT_NETBEANS_INTG
-		/* always show glyph gutter in netbeans */
-		usingNetbeans ||
+		/* show glyph gutter in netbeans */
+		netbeans_active() ||
 # endif
 		wp->w_buffer->b_signlist != NULL ? 2 : 0)
 #endif
diff --git a/src/netbeans.c b/src/netbeans.c
index f1bae59..50882e0 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -24,6 +24,9 @@
 
 #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
 
+/* TODO: when should this not be defined? */
+#define INET_SOCKETS
+
 /* Note: when making changes here also adjust configure.in. */
 #ifdef WIN32
 # ifdef DEBUG
@@ -43,8 +46,13 @@
 # define sock_close(sd) closesocket(sd)
 # define sleep(t) Sleep(t*1000) /* WinAPI Sleep() accepts milliseconds */
 #else
-# include <netdb.h>
-# include <netinet/in.h>
+# ifdef INET_SOCKETS
+#  include <netdb.h>
+#  include <netinet/in.h>
+# else
+#  include <sys/un.h>
+# endif
+
 # include <sys/socket.h>
 # ifdef HAVE_LIBGEN_H
 #  include <libgen.h>
@@ -57,8 +65,6 @@
 
 #include "version.h"
 
-#define INET_SOCKETS
-
 #define GUARDED		10000 /* typenr for "guarded" annotation */
 #define GUARDEDOFFSET 1000000 /* base for "guarded" sign id's */
 #define MAX_COLOR_LENGTH 32 /* max length of color name in defineAnnoType */
@@ -75,7 +81,7 @@
 static void postpone_keycommand __ARGS((char_u *keystr));
 static void special_keys __ARGS((char_u *args));
 
-static void netbeans_connect __ARGS((void));
+static int netbeans_connect __ARGS((char *, int));
 static int getConnInfo __ARGS((char *file, char **host, char **port, char **password));
 
 static void nb_init_graphics __ARGS((void));
@@ -90,6 +96,7 @@
 static void nb_parse_cmd __ARGS((char_u *));
 static int  nb_do_cmd __ARGS((int, char_u *, int, int, char_u *));
 static void nb_send __ARGS((char *buf, char *fun));
+static void nb_free __ARGS((void));
 
 /* TRUE when netbeans is running with a GUI. */
 #ifdef FEAT_GUI
@@ -102,20 +109,20 @@
 typedef int NBSOCK;
 #endif
 
-static NBSOCK sd = -1;			/* socket fd for Netbeans connection */
+static NBSOCK nbsock = -1;		/* socket fd for Netbeans connection */
+#define NETBEANS_OPEN (nbsock != -1)
+
 #ifdef FEAT_GUI_MOTIF
-static XtInputId inputHandler;		/* Cookie for input */
+static XtInputId inputHandler = (XtInputId)NULL;  /* Cookie for input */
 #endif
 #ifdef FEAT_GUI_GTK
-static gint inputHandler;		/* Cookie for input */
+static gint inputHandler = 0;		/* Cookie for input */
 #endif
 #ifdef FEAT_GUI_W32
 static int  inputHandler = -1;		/* simply ret.value of WSAAsyncSelect() */
 extern HWND s_hwnd;			/* Gvim's Window handle */
 #endif
 static int r_cmdno;			/* current command number for reply */
-static int haveConnection = FALSE;	/* socket is connected and
-					   initialization is done */
 static int dosetvisible = FALSE;
 
 /*
@@ -125,10 +132,17 @@
 # include "nbdebug.c"
 #endif
 
-/* Connect back to Netbeans process */
+static int needupdate = 0;
+static int inAtomic = 0;
+
     static void
-netbeans_disconnect(void)
+netbeans_close(void)
 {
+    if (!NETBEANS_OPEN)
+	return;
+
+    netbeans_send_disconnect();
+
 #ifdef FEAT_GUI_MOTIF
     if (inputHandler != (XtInputId)NULL)
     {
@@ -146,26 +160,42 @@
 #  ifdef FEAT_GUI_W32
     if (inputHandler == 0)
     {
-	WSAAsyncSelect(sd, s_hwnd, 0, 0);
+	WSAAsyncSelect(nbsock, s_hwnd, 0, 0);
 	inputHandler = -1;
     }
 #  endif
 # endif
 #endif
 
-    sd = -1;
-    haveConnection = FALSE;
 #ifdef FEAT_BEVAL
     bevalServers &= ~BEVAL_NETBEANS;
 #endif
+
+    sock_close(nbsock);
+    nbsock = -1;
+
+    needupdate = 0;
+    inAtomic = 0;
+    nb_free();
+
+    /* remove all signs and update the screen after gutter removal */
+    coloncmd(":sign unplace *");
+    changed_window_setting();
+    update_screen(CLEAR);
+    setcursor();
+    out_flush();
+#ifdef FEAT_GUI
+    gui_update_cursor(TRUE, FALSE);
+    gui_mch_flush();
+#endif
 }
 
 #define NB_DEF_HOST "localhost"
 #define NB_DEF_ADDR "3219"
 #define NB_DEF_PASS "changeme"
 
-    static void
-netbeans_connect(void)
+    static int
+netbeans_connect(char *params, int abort)
 {
 #ifdef INET_SOCKETS
     struct sockaddr_in	server;
@@ -178,6 +208,7 @@
 #else
     struct sockaddr_un	server;
 #endif
+    int		sd;
     char	buf[32];
     char	*hostname = NULL;
     char	*address = NULL;
@@ -185,29 +216,29 @@
     char	*fname;
     char	*arg = NULL;
 
-    if (netbeansArg[3] == '=')
+    if (*params == '=')
     {
-	/* "-nb=fname": Read info from specified file. */
-	if (getConnInfo(netbeansArg + 4, &hostname, &address, &password)
+	/* "=fname": Read info from specified file. */
+	if (getConnInfo(params + 1, &hostname, &address, &password)
 								      == FAIL)
-	    return;
+	    return FAIL;
     }
     else
     {
-	if (netbeansArg[3] == ':')
-	    /* "-nb:<host>:<addr>:<password>": get info from argument */
-	    arg = netbeansArg + 4;
+	if (*params == ':')
+	    /* ":<host>:<addr>:<password>": get info from argument */
+	    arg = params + 1;
 	if (arg == NULL && (fname = getenv("__NETBEANS_CONINFO")) != NULL)
 	{
-	    /* "-nb": get info from file specified in environment */
+	    /* "": get info from file specified in environment */
 	    if (getConnInfo(fname, &hostname, &address, &password) == FAIL)
-		return;
+		return FAIL;
 	}
 	else
 	{
 	    if (arg != NULL)
 	    {
-		/* "-nb:<host>:<addr>:<password>": get info from argument */
+		/* ":<host>:<addr>:<password>": get info from argument */
 		hostname = arg;
 		address = strchr(hostname, ':');
 		if (address != NULL)
@@ -256,6 +287,10 @@
     if (hostname == NULL || address == NULL || password == NULL)
 	goto theend;	    /* out of memory */
 
+#ifdef FEAT_GUI_W32
+    netbeans_init_winsock();
+#endif
+
 #ifdef INET_SOCKETS
     port = atoi(address);
 
@@ -281,7 +316,6 @@
 	}
 	nbdebug(("error in gethostbyname() in netbeans_connect()\n"));
 	PERROR("gethostbyname() in netbeans_connect()");
-	sd = -1;
 	goto theend;
     }
     memcpy((char *)&server.sin_addr, host->h_addr, host->h_length);
@@ -327,6 +361,15 @@
 		{
 		    nbdebug(("retrying...\n"));
 		    sleep(5);
+		    if (!abort)
+		    {
+			ui_breakcheck();
+			if (got_int)
+			{
+			    sock_errno = EINTR;
+			    break;
+			}
+		    }
 		    if (connect(sd, (struct sockaddr *)&server,
 				sizeof(server)) == 0)
 		    {
@@ -339,7 +382,9 @@
 		    /* Get here when the server can't be found. */
 		    nbdebug(("Cannot connect to Netbeans #2\n"));
 		    PERROR(_("Cannot connect to Netbeans #2"));
-		    getout(1);
+		    if (abort)
+			getout(1);
+		    goto theend;
 		}
 	    }
 
@@ -348,25 +393,24 @@
 	{
 	    nbdebug(("Cannot connect to Netbeans\n"));
 	    PERROR(_("Cannot connect to Netbeans"));
-	    getout(1);
+	    if (abort)
+		getout(1);
+	    goto theend;
 	}
     }
 
+    nbsock = sd;
     vim_snprintf(buf, sizeof(buf), "AUTH %s\n", password);
     nb_send(buf, "netbeans_connect");
 
     sprintf(buf, "0:version=0 \"%s\"\n", ExtEdProtocolVersion);
     nb_send(buf, "externaleditor_version");
 
-/*    nb_init_graphics();  delay until needed */
-
-    haveConnection = TRUE;
-
 theend:
     vim_free(hostname);
     vim_free(address);
     vim_free(password);
-    return;
+    return NETBEANS_OPEN ? OK : FAIL;
 }
 
 /*
@@ -580,6 +624,9 @@
     char_u	*p;
     queue_T	*node;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     while (head.next != NULL && head.next != &head)
     {
 	node = head.next;
@@ -683,7 +730,7 @@
 # endif
 #endif
 
-    if (sd < 0)
+    if (!NETBEANS_OPEN)
     {
 	nbdebug(("messageFromNetbeans() called without a socket\n"));
 	return;
@@ -711,20 +758,20 @@
     {
 #ifdef HAVE_SELECT
 	FD_ZERO(&rfds);
-	FD_SET(sd, &rfds);
+	FD_SET(nbsock, &rfds);
 	tval.tv_sec = 0;
 	tval.tv_usec = 0;
-	if (select(sd + 1, &rfds, NULL, NULL, &tval) <= 0)
+	if (select(nbsock + 1, &rfds, NULL, NULL, &tval) <= 0)
 	    break;
 #else
 # ifdef HAVE_POLL
-	fds.fd = sd;
+	fds.fd = nbsock;
 	fds.events = POLLIN;
 	if (poll(&fds, 1, 0) <= 0)
 	    break;
 # endif
 #endif
-	len = sock_read(sd, buf, MAXMSGSIZE);
+	len = sock_read(nbsock, buf, MAXMSGSIZE);
 	if (len <= 0)
 	    break;	/* error or nothing more to read */
 
@@ -738,7 +785,7 @@
     if (readlen <= 0)
     {
 	/* read error or didn't read anything */
-	netbeans_disconnect();
+	netbeans_close();
 	nbdebug(("messageFromNetbeans: Error in read() from socket\n"));
 	if (len < 0)
 	{
@@ -793,11 +840,9 @@
     if (STRCMP(cmd, "DISCONNECT") == 0)
     {
 	/* We assume the server knows that we can safely exit! */
-	if (sd >= 0)
-	    sock_close(sd);
 	/* Disconnect before exiting, Motif hangs in a Select error
 	 * message otherwise. */
-	netbeans_disconnect();
+	netbeans_close();
 	getout(0);
 	/* NOTREACHED */
     }
@@ -805,9 +850,7 @@
     if (STRCMP(cmd, "DETACH") == 0)
     {
 	/* The IDE is breaking the connection. */
-	if (sd >= 0)
-	    sock_close(sd);
-	netbeans_disconnect();
+	netbeans_close();
 	return;
     }
 
@@ -878,13 +921,13 @@
 
 typedef struct nbbuf_struct nbbuf_T;
 
-static nbbuf_T *buf_list = 0;
+static nbbuf_T *buf_list = NULL;
 static int buf_list_size = 0;	/* size of buf_list */
 static int buf_list_used = 0;	/* nr of entries in buf_list actually in use */
 
-static char **globalsignmap;
-static int globalsignmaplen;
-static int globalsignmapused;
+static char **globalsignmap = NULL;
+static int globalsignmaplen = 0;
+static int globalsignmapused = 0;
 
 static int  mapsigntype __ARGS((nbbuf_T *, int localsigntype));
 static void addsigntype __ARGS((nbbuf_T *, int localsigntype, char_u *typeName,
@@ -896,6 +939,66 @@
 static int curPCtype = -1;
 
 /*
+ * Free netbeans resources.
+ */
+    static void
+nb_free()
+{
+    keyQ_T *key_node = keyHead.next;
+    queue_T *cmd_node = head.next;
+    nbbuf_T buf;
+    buf_T *bufp;
+    int i;
+
+    /* free the netbeans buffer list */
+    for (i = 0; i < buf_list_used; i++)
+    {
+	buf = buf_list[i];
+	vim_free(buf.displayname);
+	vim_free(buf.signmap);
+	if ((bufp=buf.bufp) != NULL)
+	{
+	    buf.bufp->b_netbeans_file = FALSE;
+	    buf.bufp->b_was_netbeans_file = FALSE;
+	}
+    }
+    vim_free(buf_list);
+    buf_list = NULL;
+    buf_list_size = 0;
+    buf_list_used = 0;
+
+    /* free the queued key commands */
+    while(key_node != NULL && key_node != &keyHead)
+    {
+	keyQ_T *next = key_node->next;
+	vim_free(key_node->keystr);
+	vim_free(key_node);
+	if (next == &keyHead)
+	{
+	    keyHead.next = &keyHead;
+	    keyHead.prev = &keyHead;
+	    break;
+	}
+	key_node = next;
+    }
+
+    /* free the queued netbeans commands */
+    while(cmd_node != NULL && cmd_node != &head)
+    {
+	queue_T *next = cmd_node->next;
+	vim_free(cmd_node->buffer);
+	vim_free(cmd_node);
+	if (next == &head)
+	{
+	    head.next = &head;
+	    head.prev = &head;
+	    break;
+	}
+	cmd_node = next;
+    }
+}
+
+/*
  * Get the Netbeans buffer number for the specified buffer.
  */
     static int
@@ -915,7 +1018,7 @@
     int
 isNetbeansBuffer(buf_T *bufp)
 {
-    return usingNetbeans && bufp->b_netbeans_file;
+    return NETBEANS_OPEN && bufp->b_netbeans_file;
 }
 
 /*
@@ -930,7 +1033,7 @@
     int
 isNetbeansModified(buf_T *bufp)
 {
-    if (usingNetbeans && bufp->b_netbeans_file)
+    if (isNetbeansBuffer(bufp))
     {
 	int bufno = nb_getbufno(bufp);
 
@@ -1010,7 +1113,7 @@
     int i;
     static char buf[128];
 
-    if (!haveConnection)
+    if (!NETBEANS_OPEN)
 	return;
 
     for (i = 0; i < buf_list_used; i++)
@@ -1026,9 +1129,8 @@
 	}
 	sprintf(buf, "%d:killed=%d\n", i, r_cmdno);
 	nbdebug(("EVT: %s", buf));
-/*	nb_send(buf, "netbeans_end");    avoid "write failed" messages */
-	if (sd >= 0)
-	    ignored = sock_write(sd, buf, (int)STRLEN(buf));
+	/* nb_send(buf, "netbeans_end");    avoid "write failed" messages */
+	ignored = sock_write(nbsock, buf, (int)STRLEN(buf));
     }
 }
 
@@ -1042,7 +1144,7 @@
      * exited, only mention the first error until the connection works again. */
     static int did_error = FALSE;
 
-    if (sd < 0)
+    if (!NETBEANS_OPEN)
     {
 	if (!did_error)
 	{
@@ -1051,7 +1153,7 @@
 	}
 	did_error = TRUE;
     }
-    else if (sock_write(sd, buf, (int)STRLEN(buf)) != (int)STRLEN(buf))
+    else if (sock_write(nbsock, buf, (int)STRLEN(buf)) != (int)STRLEN(buf))
     {
 	if (!did_error)
 	{
@@ -1073,9 +1175,6 @@
 {
     char reply[32];
 
-    if (!haveConnection)
-	return;
-
     nbdebug(("REP %d: <none>\n", cmdno));
 
     sprintf(reply, "%d\n", cmdno);
@@ -1092,9 +1191,6 @@
 {
     char_u *reply;
 
-    if (!haveConnection)
-	return;
-
     nbdebug(("REP %d: %s\n", cmdno, (char *)result));
 
     reply = alloc((unsigned)STRLEN(result) + 32);
@@ -1113,9 +1209,6 @@
 {
     char reply[32];
 
-    if (!haveConnection)
-	return;
-
     nbdebug(("REP %d: %ld\n", cmdno, result));
 
     sprintf(reply, "%d %ld\n", cmdno, result);
@@ -1272,8 +1365,6 @@
 
 #define SKIP_STOP 2
 #define streq(a,b) (strcmp(a,b) == 0)
-static int needupdate = 0;
-static int inAtomic = 0;
 
 /*
  * Do the actual processing of a single netbeans command or function.
@@ -2648,6 +2739,12 @@
     vim_free(save_str);
 }
 
+    void
+ex_nbclose(eap)
+    exarg_T	*eap UNUSED;
+{
+    netbeans_close();
+}
 
     void
 ex_nbkey(eap)
@@ -2656,6 +2753,12 @@
     (void)netbeans_keystring(eap->arg);
 }
 
+    void
+ex_nbstart(eap)
+    exarg_T	*eap;
+{
+    netbeans_open((char *)eap->arg, FALSE);
+}
 
 /*
  * Initialize highlights and signs for use by netbeans  (mostly obsolete)
@@ -2766,7 +2869,7 @@
 
     /* Don't do anything when 'ballooneval' is off, messages scrolled the
      * windows up or we have no connection. */
-    if (!p_beval || msg_scrolled > 0 || !haveConnection)
+    if (!p_beval || msg_scrolled > 0 || !NETBEANS_OPEN)
 	return;
 
     if (get_beval_info(beval, TRUE, &wp, &lnum, &text, &col) == OK)
@@ -2791,12 +2894,21 @@
 #endif
 
 /*
+ * Return TRUE when the netbeans connection is closed.
+ */
+    int
+netbeans_active(void)
+{
+    return NETBEANS_OPEN;
+}
+
+/*
  * Return netbeans file descriptor.
  */
     int
-netbeans_filedesc (void)
+netbeans_filedesc(void)
 {
-    return sd;
+    return nbsock;
 }
 
 #if defined(FEAT_GUI) || defined(PROTO)
@@ -2806,41 +2918,38 @@
     void
 netbeans_gui_register(void)
 {
-    if (!NB_HAS_GUI)
+    if (!NB_HAS_GUI || !NETBEANS_OPEN)
 	return;
 
-    if (sd > 0)
-    {
 # ifdef FEAT_GUI_MOTIF
-	/* tell notifier we are interested in being called
-	 * when there is input on the editor connection socket
-	 */
-	if (inputHandler == (XtInputId)NULL)
-	    inputHandler = XtAppAddInput((XtAppContext)app_context, sd,
-			     (XtPointer)(XtInputReadMask + XtInputExceptMask),
-						   messageFromNetbeans, NULL);
+    /* tell notifier we are interested in being called
+     * when there is input on the editor connection socket
+     */
+    if (inputHandler == (XtInputId)NULL)
+	inputHandler = XtAppAddInput((XtAppContext)app_context, nbsock,
+			 (XtPointer)(XtInputReadMask + XtInputExceptMask),
+					       messageFromNetbeans, NULL);
 # else
 #  ifdef FEAT_GUI_GTK
-	/*
-	 * Tell gdk we are interested in being called when there
-	 * is input on the editor connection socket
-	 */
-	if (inputHandler == 0)
-	    inputHandler = gdk_input_add((gint)sd, (GdkInputCondition)
-		((int)GDK_INPUT_READ + (int)GDK_INPUT_EXCEPTION),
-						   messageFromNetbeans, NULL);
+    /*
+     * Tell gdk we are interested in being called when there
+     * is input on the editor connection socket
+     */
+    if (inputHandler == 0)
+	inputHandler = gdk_input_add((gint)nbsock, (GdkInputCondition)
+	    ((int)GDK_INPUT_READ + (int)GDK_INPUT_EXCEPTION),
+					       messageFromNetbeans, NULL);
 #  else
 #   ifdef FEAT_GUI_W32
-	/*
-	 * Tell Windows we are interested in receiving message when there
-	 * is input on the editor connection socket
-	 */
-	if (inputHandler == -1)
-	    inputHandler = WSAAsyncSelect(sd, s_hwnd, WM_NETBEANS, FD_READ);
+    /*
+     * Tell Windows we are interested in receiving message when there
+     * is input on the editor connection socket
+     */
+    if (inputHandler == -1)
+	inputHandler = WSAAsyncSelect(nbsock, s_hwnd, WM_NETBEANS, FD_READ);
 #   endif
 #  endif
 # endif
-    }
 
 # ifdef FEAT_BEVAL
     bevalServers |= BEVAL_NETBEANS;
@@ -2852,15 +2961,17 @@
  * Tell netbeans that the window was opened, ready for commands.
  */
     void
-netbeans_startup_done(void)
+netbeans_open(char *params, int abort)
 {
     char *cmd = "0:startupDone=0\n";
 
-    if (!usingNetbeans)
+    if (NETBEANS_OPEN)
+    {
+	EMSG(_("E511: netbeans already connected"));
 	return;
+    }
 
-    netbeans_connect();
-    if (!haveConnection)
+    if (netbeans_connect(params, abort) != OK)
 	return;
 #ifdef FEAT_GUI
     netbeans_gui_register();
@@ -2868,6 +2979,16 @@
 
     nbdebug(("EVT: %s", cmd));
     nb_send(cmd, "netbeans_startup_done");
+
+    /* update the screen after having added the gutter */
+    changed_window_setting();
+    update_screen(CLEAR);
+    setcursor();
+    out_flush();
+#ifdef FEAT_GUI
+    gui_update_cursor(TRUE, FALSE);
+    gui_mch_flush();
+#endif
 }
 
 /*
@@ -2879,7 +3000,7 @@
 {
     char buf[128];
 
-    if (haveConnection)
+    if (NETBEANS_OPEN)
     {
 	sprintf(buf, "0:disconnect=%d\n", r_cmdno);
 	nbdebug(("EVT: %s", buf));
@@ -2896,7 +3017,7 @@
 {
     char buf[128];
 
-    if (!haveConnection)
+    if (!NETBEANS_OPEN)
 	return;
 
     sprintf(buf, "0:geometry=%d %d %d %d %d\n",
@@ -2917,7 +3038,7 @@
     char    buffer[2*MAXPATHL];
     char_u  *q;
 
-    if (!haveConnection || dosetvisible)
+    if (!NETBEANS_OPEN || !bufp->b_netbeans_file || dosetvisible)
 	return;
 
     q = nb_quote(bufp->b_ffname);
@@ -2949,7 +3070,7 @@
     nbbuf_T *bp = nb_get_buf(nb_getbufno(bufp));
     int	    bnum;
 
-    if (!haveConnection)
+    if (!NETBEANS_OPEN)
 	return;
 
     q = nb_quote(bufp->b_ffname);
@@ -2985,7 +3106,7 @@
     nbbuf_T	*nbbuf = nb_get_buf(bufno);
     char	buffer[2*MAXPATHL];
 
-    if (!haveConnection || bufno == -1)
+    if (!NETBEANS_OPEN || bufno == -1)
 	return;
 
     nbdebug(("netbeans_file_killed:\n"));
@@ -3012,7 +3133,7 @@
     int		bufno;
     nbbuf_T	*nbbuf;
 
-    if (!haveConnection || !netbeansFireChanges)
+    if (!NETBEANS_OPEN || !netbeansFireChanges)
 	return NULL;		/* changes are not reported at all */
 
     bufno = nb_getbufno(bufp);
@@ -3046,6 +3167,9 @@
     char_u	*p;
     char_u	*newtxt;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     nbbuf = nb_bufp2nbbuf_fire(bufp, &bufno);
     if (nbbuf == NULL)
 	return;
@@ -3091,6 +3215,9 @@
     pos_T	pos;
     long	off;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     nbbuf = nb_bufp2nbbuf_fire(bufp, &bufno);
     if (nbbuf == NULL)
 	return;
@@ -3119,6 +3246,9 @@
     void
 netbeans_unmodified(buf_T *bufp UNUSED)
 {
+    if (!NETBEANS_OPEN)
+	return;
+
 #if 0
     char_u	buf[128];
     int		bufno;
@@ -3148,6 +3278,9 @@
     char	buf[128];
     int		bufno;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     bufno = nb_getbufno(curbuf);
 
     if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
@@ -3199,10 +3332,9 @@
     long	off;
     char_u	*q;
 
-    if (!haveConnection)
+    if (!NETBEANS_OPEN)
 	return TRUE;
 
-
     if (bufno == -1)
     {
 	nbdebug(("got keycommand for non-NetBeans buffer, opening...\n"));
@@ -3260,6 +3392,9 @@
     int		bufno;
     nbbuf_T	*nbbuf;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     nbbuf = nb_bufp2nbbuf_fire(bufp, &bufno);
     if (nbbuf == NULL)
 	return;
@@ -3282,6 +3417,9 @@
     int		bufno;
     nbbuf_T	*nbbuf;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     nbbuf = nb_bufp2nbbuf_fire(bufp, &bufno);
     if (nbbuf == NULL)
 	return;
@@ -3307,6 +3445,9 @@
     signlist_T	*p;
     int		lnum;
 
+    if (!NETBEANS_OPEN)
+	return FALSE;
+
     for (p = curbuf->b_signlist; p != NULL; p = p->next)
 	if (p->id >= GUARDEDOFFSET)
 	    for (lnum = top + 1; lnum < bot; lnum++)
@@ -3328,6 +3469,9 @@
     int y;
     int x;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     x = 0;
     y = row * gui.char_height + 2;
 
@@ -3357,6 +3501,9 @@
     int x;
     GdkDrawable *drawable = gui.drawarea->window;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     x = 0;
     y = row * gui.char_height + 2;
 
@@ -3382,6 +3529,9 @@
 {
     signlist_T	*p;
 
+    if (!NETBEANS_OPEN)
+	return;
+
     for (p = curbuf->b_signlist; p != NULL; p = p->next)
     {
 	if (p->lnum == lnum && p->next && p->next->lnum == lnum)
diff --git a/src/normal.c b/src/normal.c
index e02c817..3e8a492 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2730,7 +2730,7 @@
 #endif
 
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans && isNetbeansBuffer(curbuf)
+    if (isNetbeansBuffer(curbuf)
 			    && !(jump_flags & (IN_STATUS_LINE | IN_SEP_LINE)))
     {
 	int key = KEY2TERMCAP1(c);
@@ -6914,12 +6914,12 @@
 		++curwin->w_cursor.col;
 	    }
 #ifdef FEAT_NETBEANS_INTG
-	    if (usingNetbeans)
+	    if (netbeans_active())
 	    {
-		colnr_T start = (colnr_T)(curwin->w_cursor.col - cap->count1);
+		colnr_T  start = (colnr_T)(curwin->w_cursor.col - cap->count1);
 
 		netbeans_removed(curbuf, curwin->w_cursor.lnum, start,
-							    (long)cap->count1);
+							   (long)cap->count1);
 		netbeans_inserted(curbuf, curwin->w_cursor.lnum, start,
 					       &ptr[start], (int)cap->count1);
 	    }
@@ -7110,7 +7110,7 @@
 		    && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
 	    {
 #ifdef FEAT_NETBEANS_INTG
-		if (usingNetbeans)
+		if (netbeans_active())
 		{
 		    if (did_change)
 		    {
@@ -7139,7 +7139,7 @@
 	}
     }
 #ifdef FEAT_NETBEANS_INTG
-    if (did_change && usingNetbeans)
+    if (did_change && netbeans_active())
     {
 	ptr = ml_get(pos.lnum);
 	count = curwin->w_cursor.col - pos.col;
diff --git a/src/ops.c b/src/ops.c
index 606ce07..3233750 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2249,14 +2249,14 @@
 	    did_change |= one_change;
 
 # ifdef FEAT_NETBEANS_INTG
-	    if (usingNetbeans && one_change)
+	    if (netbeans_active() && one_change)
 	    {
 		char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
 
 		netbeans_removed(curbuf, pos.lnum, bd.textcol,
 							    (long)bd.textlen);
 		netbeans_inserted(curbuf, pos.lnum, bd.textcol,
-				    &ptr[bd.textcol], bd.textlen);
+						&ptr[bd.textcol], bd.textlen);
 	    }
 # endif
 	}
@@ -2294,7 +2294,7 @@
 	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
 									  0L);
 #ifdef FEAT_NETBEANS_INTG
-	    if (usingNetbeans && did_change)
+	    if (netbeans_active() && did_change)
 	    {
 		char_u *ptr;
 		int count;
@@ -2306,7 +2306,7 @@
 		    count = (int)STRLEN(ptr) - pos.col;
 		    netbeans_removed(curbuf, pos.lnum, pos.col, (long)count);
 		    netbeans_inserted(curbuf, pos.lnum, pos.col,
-						 &ptr[pos.col], count);
+							&ptr[pos.col], count);
 		    pos.col = 0;
 		    pos.lnum++;
 		}
@@ -2314,7 +2314,7 @@
 		count = oap->end.col - pos.col + 1;
 		netbeans_removed(curbuf, pos.lnum, pos.col, (long)count);
 		netbeans_inserted(curbuf, pos.lnum, pos.col,
-						 &ptr[pos.col], count);
+							&ptr[pos.col], count);
 	    }
 #endif
 	}
diff --git a/src/os_unix.c b/src/os_unix.c
index 5059ab1..4cb1d4a 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -368,8 +368,7 @@
 
 #ifdef FEAT_NETBEANS_INTG
     /* Process the queued netbeans messages. */
-    if (usingNetbeans)
-	netbeans_parse_messages();
+    netbeans_parse_messages();
 #endif
 
     /* Check if window changed size while we were busy, perhaps the ":set
@@ -386,8 +385,7 @@
 	    handle_resize();
 #ifdef FEAT_NETBEANS_INTG
 	    /* Process the queued netbeans messages. */
-	    if (usingNetbeans)
-		netbeans_parse_messages();
+            netbeans_parse_messages();
 #endif
 	}
     }
@@ -421,8 +419,7 @@
 
 #ifdef FEAT_NETBEANS_INTG
 	/* Process the queued netbeans messages. */
-	if (usingNetbeans)
-	    netbeans_parse_messages();
+        netbeans_parse_messages();
 #endif
 	/*
 	 * we want to be interrupted by the winch signal
@@ -3108,8 +3105,7 @@
 #endif
 
 #ifdef FEAT_NETBEANS_INTG
-    if (usingNetbeans)
-	netbeans_send_disconnect();
+    netbeans_send_disconnect();
 #endif
 
 #ifdef EXITFREE
@@ -4788,7 +4784,7 @@
 {
     int		ret;
 #ifdef FEAT_NETBEANS_INTG
-    int		nb_fd = (usingNetbeans ? netbeans_filedesc() : -1);
+    int		nb_fd = netbeans_filedesc();
 #endif
 #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
     static int	busy = FALSE;
diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro
index 3a47698..657a4c6 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -93,4 +93,5 @@
 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));
+void netbeans_init_winsock __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/netbeans.pro b/src/proto/netbeans.pro
index e070c51..17a60bc 100644
--- a/src/proto/netbeans.pro
+++ b/src/proto/netbeans.pro
@@ -4,11 +4,14 @@
 int isNetbeansBuffer __ARGS((buf_T *bufp));
 int isNetbeansModified __ARGS((buf_T *bufp));
 void netbeans_end __ARGS((void));
+void ex_nbclose __ARGS((exarg_T *eap));
 void ex_nbkey __ARGS((exarg_T *eap));
+void ex_nbstart __ARGS((exarg_T *eap));
 void netbeans_beval_cb __ARGS((BalloonEval *beval, int state));
+int netbeans_active __ARGS((void));
 int netbeans_filedesc __ARGS((void));
 void netbeans_gui_register __ARGS((void));
-void netbeans_startup_done __ARGS((void));
+void netbeans_open __ARGS((char *params, int abort));
 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));
diff --git a/src/screen.c b/src/screen.c
index 72a93da..38d577e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1981,7 +1981,7 @@
 {
     return (wp->w_buffer->b_signlist != NULL
 # ifdef FEAT_NETBEANS_INTG
-			    || usingNetbeans
+			    || netbeans_active()
 # endif
 		    );
 }
diff --git a/src/ui.c b/src/ui.c
index 8bafa15..a755e30 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -2935,8 +2935,7 @@
     if (col < 0)
     {
 #ifdef FEAT_NETBEANS_INTG
-	if (usingNetbeans)
-	    netbeans_gutter_click(lnum);
+        netbeans_gutter_click(lnum);
 #endif
 	col = 0;
     }
diff --git a/src/undo.c b/src/undo.c
index c042d04..4035466 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -346,7 +346,7 @@
      * Netbeans defines areas that cannot be modified.  Bail out here when
      * trying to change text in a guarded area.
      */
-    if (usingNetbeans)
+    if (netbeans_active())
     {
 	if (netbeans_is_guarded(top, bot))
 	{
