diff --git a/src/netbeans.c b/src/netbeans.c
index 4ff9085..ad049a2 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -743,6 +743,7 @@
 	nbdebug(("EVT: %s", buf));
 	// nb_send(buf, "netbeans_end");    avoid "write failed" messages
 	nb_send(buf, NULL);
+	buf_list[i].bufp = NULL;
     }
 }
 
diff --git a/src/os_win32.c b/src/os_win32.c
index 143dab9..6b32869 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -2749,6 +2749,10 @@
     void
 mch_exit(int r)
 {
+#ifdef FEAT_NETBEANS_INTG
+    netbeans_send_disconnect();
+#endif
+
 #ifdef VIMDLL
     if (gui.in_use || gui.starting)
 	mch_exit_g(r);
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 3e7e511..13d4784 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -349,7 +349,6 @@
       \ 'Test_diff_screen()',
       \ 'Test_exit_callback_interval()',
       \ 'Test_map_timeout_with_timer_interrupt()',
-      \ 'Test_nb_basic()',
       \ 'Test_out_cb()',
       \ 'Test_pipe_through_sort_all()',
       \ 'Test_pipe_through_sort_some()',
diff --git a/src/testdir/test_netbeans.py b/src/testdir/test_netbeans.py
index bdebb54..c9e8285 100644
--- a/src/testdir/test_netbeans.py
+++ b/src/testdir/test_netbeans.py
@@ -10,6 +10,7 @@
 import sys
 import time
 import threading
+import re
 
 try:
     # Python 3
@@ -20,8 +21,119 @@
 
 class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
 
+    def process_msgs(self, msgbuf):
+        # Process all the received netbeans commands/responses/events from Vim.
+        # Each one is separated by a newline character. If a partial command
+        # is received, process it later after the rest of it is received.
+        while True:
+            (line, sep, rest) = msgbuf.partition('\n')
+            if sep == '':
+                # received partial line
+                return line
+            msgbuf = rest
+
+            # Process a command only after receiving a newline.
+            response = ''
+            if line.find('Xcmdbuf') > 0:
+                name = line.split('"')[1]
+                response = '1:putBufferNumber!15 "' + name + '"\n'
+                response += '1:startDocumentListen!16\n'
+            elif re.match('1:insert=.* "\\\\n"', line):
+                # extract the command from the previous line
+                cmd = re.search('.*"(.*)"', self.prev_line).group(1)
+                testmap = {
+                  'getCursor_Test' : '0:getCursor/30\n',
+                  'E627_Test' : '0 setReadOnly!31\n',
+                  'E628_Test' : '0:setReadOnly 32\n',
+                  'E632_Test' : '0:getLength/33\n',
+                  'E633_Test' : '0:getText/34\n',
+                  'E634_Test' : '0:remove/35 1 1\n',
+                  'E635_Test' : '0:insert/36 0 "line1\\n"\n',
+                  'E636_Test' : '0:create!37\n',
+                  'E637_Test' : '0:startDocumentListen!38\n',
+                  'E638_Test' : '0:stopDocumentListen!39\n',
+                  'E639_Test' : '0:setTitle!40 "Title"\n',
+                  'E640_Test' : '0:initDone!41\n',
+                  'E641_Test' : '0:putBufferNumber!42 "XSomeBuf"\n',
+                  'E642_Test' : '9:putBufferNumber!43 "XInvalidBuf"\n',
+                  'E643_Test' : '0:setFullName!44 "XSomeBuf"\n',
+                  'E644_Test' : '0:editFile!45 "Xfile3"\n',
+                  'E645_Test' : '0:setVisible!46 T\n',
+                  'E646_Test' : '0:setModified!47 T\n',
+                  'E647_Test' : '0:setDot!48 1/1\n',
+                  'E648_Test' : '0:close!49\n',
+                  'E650_Test' : '0:defineAnnoType!50 1 "abc" "a" "a" 1 1\n',
+                  'E651_Test' : '0:addAnno!51 1 1 1 1\n',
+                  'E652_Test' : '0:getAnno/52 8\n',
+                  'editFile_Test' : '2:editFile!53 "Xfile3"\n',
+                  'getLength_Test' : '2:getLength/54\n',
+                  'getModified_Test' : '2:getModified/55\n',
+                  'getText_Test' : '2:getText/56\n',
+                  'setDot_Test' : '2:setDot!57 3/6\n',
+                  'startDocumentListen_Test' : '2:startDocumentListen!58\n',
+                  'stopDocumentListen_Test' : '2:stopDocumentListen!59\n',
+                  'define_anno_Test' : '2:defineAnnoType!60 1 "s1" "x" "=>" blue none\n',
+                  'E532_Test' : '2:defineAnnoType!61 1 "s1" "x" "=>" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa none\n',
+                  'add_anno_Test' : '2:addAnno!62 1 1 2/1 0\n',
+                  'get_anno_Test' : '2:getAnno/63 1\n',
+                  'remove_anno_Test' : '2:removeAnno!64 1\n',
+                  'getModifiedAll_Test' : '0:getModified/65\n',
+                  'create_Test' : '3:create!66\n',
+                  'setTitle_Test' : '3:setTitle!67 "Xfile4"\n',
+                  'setFullName_Test' : '3:setFullName!68 "Xfile4"\n',
+                  'initDone_Test' : '3:initDone!69\n',
+                  'setVisible_Test' : '3:setVisible!70 T\n',
+                  'setModtime_Test' : '3:setModtime!71 6\n',
+                  'insert_Test' : '3:insert/72 0 "line1\\nline2\\n"\n',
+                  'remove_Test' : '3:remove/73 3 4\n',
+                  'remove_invalid_offset_Test' : '3:remove/74 900 4\n',
+                  'remove_invalid_count_Test' : '3:remove/75 1 800\n',
+                  'guard_Test' : '3:guard!76 8 7\n',
+                  'setModified_Test' : '3:setModified!77 T\n',
+                  'insertDone_Test' : '3:insertDone!78 T F\n',
+                  'saveDone_Test' : '3:saveDone!79\n',
+                  'invalidcmd_Test' : '3:invalidcmd!80\n',
+                  'invalidfunc_Test' : '3:invalidfunc/81\n',
+                  'removeAnno_fail_Test' : '0:removeAnno/82 1\n',
+                  'guard_fail_Test' : '0:guard/83 1 1\n',
+                  'save_fail_Test' : '0:save/84\n',
+                  'netbeansBuffer_fail_Test' : '0:netbeansBuffer/85 T\n',
+                  'setExitDelay_Test' : '0:setExitDelay!86 2\n',
+                  'setReadOnly_Test' : '3:setReadOnly!87\n',
+                  'close_Test' : '3:close!88\n',
+                  'specialKeys_Test' : '0:specialKeys!89 "F12 F13"\n',
+                  'detach_Test' : '2:close!90\n1:close!91\nDETACH\n'
+                }
+                # execute the specified test
+                if cmd not in testmap:
+                  print("=== invalid command %s ===" % (cmd))
+                else:
+                  response = testmap[cmd]
+            elif line.find('disconnect') > 0:
+                # we're done
+                self.server.shutdown()
+                return
+
+            # save the current line, this is used as the test to run after
+            # receiving a newline only line.
+            self.prev_line = line
+
+            if len(response) > 0:
+                self.request.sendall(response.encode('utf-8'))
+                # Write the respoinse into the file, so that the test can knows
+                # the command was sent.
+                with open("Xnetbeans", "a") as myfile:
+                    myfile.write('send: ' + response)
+                if self.debug:
+                    with open("save_Xnetbeans", "a") as myfile:
+                        myfile.write('send: ' + response)
+
     def handle(self):
         print("=== socket opened ===")
+        # To preserve the Xnetbeans file as save_Xnetbeans, set debug to 1
+        self.debug = 0
+        self.prev_line = ''
+        msgbuf = ''
         while True:
             try:
                 received = self.request.recv(4096).decode('utf-8')
@@ -40,23 +152,15 @@
             # what happened.
             with open("Xnetbeans", "a") as myfile:
                 myfile.write(received)
+            if self.debug:
+                with open("save_Xnetbeans", "a") as myfile:
+                    myfile.write(received)
 
-            response = ''
-            if received.find('XREADME.txt') > 0:
-                name = received.split('"')[1]
-                response = '5:putBufferNumber!33 "' + name + '"\n'
-                response += '5:setDot!1 3/19\n'
-            elif received.find('disconnect') > 0:
-                # we're done
-                self.server.shutdown()
-                return
-
-            if len(response) > 0:
-                self.request.sendall(response.encode('utf-8'))
-                # Write the respoinse into the file, so that the test can knows
-                # the command was sent.
-                with open("Xnetbeans", "a") as myfile:
-                    myfile.write('send: ' + response)
+            # Can receive more than one line in a response or a partial line.
+            # Accumulate all the received characters and process one line at
+            # a time.
+            msgbuf += received
+            msgbuf = self.process_msgs(msgbuf)
 
 class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
     pass
diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim
index 61da44d..a0606fc 100644
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -15,37 +15,610 @@
   call RunServer('test_netbeans.py', a:testfunc, a:000)
 endfunc
 
+" Wait for an exception (error) to be thrown. This is used to check whether a
+" message from the netbeans server causes an error. It takes some time for Vim
+" to process a netbeans message. So a sleep is used below to account for this.
+func WaitForError(errcode)
+  let save_exception = ''
+  for i in range(200)
+    try
+      sleep 5m
+    catch
+      let save_exception = v:exception
+      break
+    endtry
+  endfor
+  call assert_match(a:errcode, save_exception)
+endfunc
+
 func Nb_basic(port)
   call delete("Xnetbeans")
   call writefile([], "Xnetbeans")
-  call writefile(repeat(['abcdefghijklmnopqrstuvwxyz'], 5), "XREADME.txt")
-  exe 'nbstart :localhost:' . a:port . ':bunny'
+
+  " Last line number in the Xnetbeans file. Used to verify the result of the
+  " communication with the netbeans server
+  let g:last = 0
+
+  " Establish the connection with the netbeans server
+  exe 'nbstart :localhost:' .. a:port .. ':bunny'
   call assert_true(has("netbeans_enabled"))
+  call WaitFor('len(readfile("Xnetbeans")) > (g:last + 2)')
+  let l = readfile("Xnetbeans")
+  call assert_equal(['AUTH bunny',
+        \ '0:version=0 "2.5"',
+        \ '0:startupDone=0'], l[-3:])
+  let g:last += 3
 
-  call WaitFor('len(readfile("Xnetbeans")) > 2')
-  split +$ XREADME.txt
+  " Trying to connect again to netbeans server should fail
+  call assert_fails("exe 'nbstart :localhost:' . a:port . ':bunny'", 'E511:')
 
-  " Opening XREADME.txt will result in a setDot command
-  call WaitFor('len(readfile("Xnetbeans")) > 4')
-  call WaitFor('getcurpos()[1] == 3')
-  let pos = getcurpos()
-  call assert_equal(3, pos[1])
-  call assert_equal(20, pos[2])
-  close
-  nbclose
+  " Open the command buffer to communicate with the server
+  split Xcmdbuf
+  let cmdbufnr = bufnr()
+  call WaitFor('len(readfile("Xnetbeans")) > (g:last + 2)')
+  let l = readfile("Xnetbeans")
+  call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
+        \ substitute(l[-3], '".*/', '"', ''))
+  call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
+        \ substitute(l[-2], '".*/', '"', ''))
+  call assert_equal('1:startDocumentListen!16', l[-1])
+  let g:last += 3
 
-  call WaitFor('len(readfile("Xnetbeans")) > 6')
+  " Keep the command buffer loaded for communication
+  hide
+
+  sleep 1m
+
+  " getCursor test
+  call writefile(['foo bar', 'foo bar', 'foo bar'], 'Xfile1')
+  split Xfile1
+  call cursor(3, 4)
+  sleep 10m
+  call appendbufline(cmdbufnr, '$', 'getCursor_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 5)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:getCursor/30', '30 -1 3 3 19'], l[-2:])
+  let g:last += 5
+
+  " Test for E627
+  call appendbufline(cmdbufnr, '$', 'E627_Test')
+  call WaitForError('E627:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0 setReadOnly!31', l[-1])
+  let g:last += 3
+
+  " Test for E628
+  call appendbufline(cmdbufnr, '$', 'E628_Test')
+  call WaitForError('E628:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setReadOnly 32', l[-1])
+  let g:last += 3
+
+  " Test for E632
+  call appendbufline(cmdbufnr, '$', 'E632_Test')
+  call WaitForError('E632:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:getLength/33', '33 0'], l[-2:])
+  let g:last += 4
+
+  " Test for E633
+  call appendbufline(cmdbufnr, '$', 'E633_Test')
+  call WaitForError('E633:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:getText/34', '34 '], l[-2:])
+  let g:last += 4
+
+  " Test for E634
+  call appendbufline(cmdbufnr, '$', 'E634_Test')
+  call WaitForError('E634:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:remove/35 1 1', '35'], l[-2:])
+  let g:last += 4
+
+  " Test for E635
+  call appendbufline(cmdbufnr, '$', 'E635_Test')
+  call WaitForError('E635:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:insert/36 0 "line1\n"', '36'], l[-2:])
+  let g:last += 4
+
+  " Test for E636
+  call appendbufline(cmdbufnr, '$', 'E636_Test')
+  call WaitForError('E636:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:create!37', l[-1])
+  let g:last += 3
+
+  " Test for E637
+  call appendbufline(cmdbufnr, '$', 'E637_Test')
+  call WaitForError('E637:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:startDocumentListen!38', l[-1])
+  let g:last += 3
+
+  " Test for E638
+  call appendbufline(cmdbufnr, '$', 'E638_Test')
+  call WaitForError('E638:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:stopDocumentListen!39', l[-1])
+  let g:last += 3
+
+  " Test for E639
+  call appendbufline(cmdbufnr, '$', 'E639_Test')
+  call WaitForError('E639:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setTitle!40 "Title"', l[-1])
+  let g:last += 3
+
+  " Test for E640
+  call appendbufline(cmdbufnr, '$', 'E640_Test')
+  call WaitForError('E640:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:initDone!41', l[-1])
+  let g:last += 3
+
+  " Test for E641
+  call appendbufline(cmdbufnr, '$', 'E641_Test')
+  call WaitForError('E641:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:putBufferNumber!42 "XSomeBuf"', l[-1])
+  let g:last += 3
+
+  " Test for E642
+  call appendbufline(cmdbufnr, '$', 'E642_Test')
+  call WaitForError('E642:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 9:putBufferNumber!43 "XInvalidBuf"', l[-1])
+  let g:last += 3
+
+  " Test for E643
+  call appendbufline(cmdbufnr, '$', 'E643_Test')
+  call WaitForError('E643:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setFullName!44 "XSomeBuf"', l[-1])
+  let g:last += 3
+
+  enew!
+
+  " Test for E644
+  call appendbufline(cmdbufnr, '$', 'E644_Test')
+  call WaitForError('E644:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:editFile!45 "Xfile3"', l[-1])
+  let g:last += 3
+
+  " Test for E645 (shown only when verbose > 0)
+  call appendbufline(cmdbufnr, '$', 'E645_Test')
+  set verbose=1
+  call WaitForError('E645:')
+  set verbose&
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setVisible!46 T', l[-1])
+  let g:last += 3
+
+  " Test for E646 (shown only when verbose > 0)
+  call appendbufline(cmdbufnr, '$', 'E646_Test')
+  set verbose=1
+  call WaitForError('E646:')
+  set verbose&
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setModified!47 T', l[-1])
+  let g:last += 3
+
+  " Test for E647
+  call appendbufline(cmdbufnr, '$', 'E647_Test')
+  call WaitForError('E647:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setDot!48 1/1', l[-1])
+  let g:last += 3
+
+  " Test for E648
+  call appendbufline(cmdbufnr, '$', 'E648_Test')
+  call WaitForError('E648:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:close!49', l[-1])
+  let g:last += 3
+
+  " Test for E650
+  call appendbufline(cmdbufnr, '$', 'E650_Test')
+  call WaitForError('E650:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:defineAnnoType!50 1 "abc" "a" "a" 1 1', l[-1])
+  let g:last += 3
+
+  " Test for E651
+  call appendbufline(cmdbufnr, '$', 'E651_Test')
+  call WaitForError('E651:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:addAnno!51 1 1 1 1', l[-1])
+  let g:last += 3
+
+  " Test for E652
+  call appendbufline(cmdbufnr, '$', 'E652_Test')
+  call WaitForError('E652:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:getAnno/52 8', '52 0'], l[-2:])
+  let g:last += 4
+
+  " editFile test
+  call writefile(['foo bar1', 'foo bar2', 'foo bar3'], 'Xfile3')
+  call appendbufline(cmdbufnr, '$', 'editFile_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:editFile!53 "Xfile3"', l[-2])
+  call assert_match('0:fileOpened=0 ".*/Xfile3" T F', l[-1])
+  call assert_equal('Xfile3', bufname())
+  let g:last += 4
+
+  " getLength test
+  call appendbufline(cmdbufnr, '$', 'getLength_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 2:getLength/54', '54 27'], l[-2:])
+  let g:last += 4
+
+  " getModified test
+  call appendbufline(cmdbufnr, '$', 'getModified_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 2:getModified/55', '55 0'], l[-2:])
+  let g:last += 4
+
+  " getText test
+  call appendbufline(cmdbufnr, '$', 'getText_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 2:getText/56',
+        \ '56 "foo bar1\nfoo bar2\nfoo bar3\n"'], l[-2:])
+  let g:last += 4
+
+  " setDot test
+  call appendbufline(cmdbufnr, '$', 'setDot_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:setDot!57 3/6', l[-1])
+  let g:last += 3
+
+  " startDocumentListen test
+  call appendbufline(cmdbufnr, '$', 'startDocumentListen_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:startDocumentListen!58', l[-1])
+  let g:last += 3
+
+  " make some changes to the buffer and check whether the netbeans server
+  " received the notifications
+  call append(2, 'blue sky')
+  1d
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_match('2:insert=\d\+ 18 "blue sky"', l[-3])
+  call assert_match('2:insert=\d\+ 26 "\\n"', l[-2])
+  call assert_match('2:remove=\d\+ 0 9', l[-1])
+  let g:last += 3
+
+  " stopDocumentListen test
+  call appendbufline(cmdbufnr, '$', 'stopDocumentListen_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:stopDocumentListen!59', l[-1])
+  let g:last += 3
+
+  " Wait for vim to process the previous netbeans message
+  sleep 1m
+
+  " modify the buffer and make sure that the netbeans server is not notified
+  call append(2, 'clear sky')
+  1d
+
+  " defineAnnoType test
+  call appendbufline(cmdbufnr, '$', 'define_anno_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:defineAnnoType!60 1 "s1" "x" "=>" blue none', l[-1])
+  sleep 1m
+  call assert_equal([{'name': '1', 'texthl': 'NB_s1', 'text': '=>'}],
+        \ sign_getdefined())
+  let g:last += 3
+
+  " defineAnnoType with a long color name
+  call appendbufline(cmdbufnr, '$', 'E532_Test')
+  call WaitForError('E532:')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:defineAnnoType!61 1 "s1" "x" "=>" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa none', l[-1])
+  let g:last += 3
+
+  " addAnno test
+  call appendbufline(cmdbufnr, '$', 'add_anno_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:addAnno!62 1 1 2/1 0', l[-1])
+  sleep 1m
+  call assert_equal([{'lnum': 2, 'id': 1, 'name': '1', 'priority': 10,
+        \ 'group': ''}], sign_getplaced()[0].signs)
+  let g:last += 3
+
+  " getAnno test
+  call appendbufline(cmdbufnr, '$', 'get_anno_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 2:getAnno/63 1', '63 2'], l[-2:])
+  let g:last += 4
+
+  " removeAnno test
+  call appendbufline(cmdbufnr, '$', 'remove_anno_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 2:removeAnno!64 1', l[-1])
+  sleep 1m
+  call assert_equal([], sign_getplaced())
+  let g:last += 3
+
+  " getModified test to get the number of modified buffers
+  call appendbufline(cmdbufnr, '$', 'getModifiedAll_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:getModified/65', '65 2'], l[-2:])
+  let g:last += 4
+
+  let bufcount = len(getbufinfo())
+
+  " create test to create a new buffer
+  call appendbufline(cmdbufnr, '$', 'create_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:create!66', l[-1])
+  " Wait for vim to process the previous netbeans message
+  sleep 10m
+  call assert_equal(bufcount + 1, len(getbufinfo()))
+  let g:last += 3
+
+  " setTitle test
+  call appendbufline(cmdbufnr, '$', 'setTitle_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setTitle!67 "Xfile4"', l[-1])
+  let g:last += 3
+
+  " setFullName test
+  call appendbufline(cmdbufnr, '$', 'setFullName_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 5)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setFullName!68 "Xfile4"', l[-3])
+  call assert_match('0:fileOpened=0 ".*/Xfile4" T F', l[-1])
+  call assert_equal('Xfile4', bufname())
+  let g:last += 5
+
+  " initDone test
+  call appendbufline(cmdbufnr, '$', 'initDone_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:initDone!69', l[-1])
+  let g:last += 3
+
+  " setVisible test
+  hide enew
+  call appendbufline(cmdbufnr, '$', 'setVisible_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setVisible!70 T', l[-1])
+  let g:last += 3
+
+  " setModtime test
+  call appendbufline(cmdbufnr, '$', 'setModtime_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setModtime!71 6', l[-1])
+  let g:last += 3
+
+  " insert test
+  call appendbufline(cmdbufnr, '$', 'insert_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 3:insert/72 0 "line1\nline2\n"', '72'], l[-2:])
+  call assert_equal(['line1', 'line2'], getline(1, '$'))
+  let g:last += 4
+
+  " remove test
+  call appendbufline(cmdbufnr, '$', 'remove_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 3:remove/73 3 4', '73'], l[-2:])
+  call assert_equal(['linine2'], getline(1, '$'))
+  let g:last += 4
+
+  " remove with invalid offset
+  call appendbufline(cmdbufnr, '$', 'remove_invalid_offset_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 3:remove/74 900 4', '74 !bad position'], l[-2:])
+  let g:last += 4
+
+  " remove with invalid count
+  call appendbufline(cmdbufnr, '$', 'remove_invalid_count_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 3:remove/75 1 800', '75 !bad count'], l[-2:])
+  let g:last += 4
+
+  " guard test
+  %d
+  call setline(1, ['foo bar', 'foo bar', 'foo bar'])
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 8)')
+  let g:last += 8
+
+  call appendbufline(cmdbufnr, '$', 'guard_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:guard!76 8 7', l[-1])
+  sleep 1m
+  " second line is guarded. Try modifying the line
+  call assert_fails('normal 2GIbaz', 'E463:')
+  call assert_fails('normal 2GAbaz', 'E463:')
+  call assert_fails('normal dd', 'E463:')
+  call assert_equal([{'name': '1', 'texthl': 'NB_s1', 'text': '=>'},
+        \ {'name': '10000', 'linehl': 'NBGuarded'}],
+        \ sign_getdefined())
+  call assert_equal([{'lnum': 2, 'id': 1000000, 'name': '10000',
+        \ 'priority': 10, 'group': ''}], sign_getplaced()[0].signs)
+  let g:last += 3
+
+  " setModified test
+  call appendbufline(cmdbufnr, '$', 'setModified_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setModified!77 T', l[-1])
+  call assert_equal(1, &modified)
+  let g:last += 3
+
+  " insertDone test
+  let v:statusmsg = ''
+  call appendbufline(cmdbufnr, '$', 'insertDone_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:insertDone!78 T F', l[-1])
+  sleep 1m
+  call assert_match('.*/Xfile4" 3L, 0C', v:statusmsg)
+  let g:last += 3
+
+  " saveDone test
+  let v:statusmsg = ''
+  call appendbufline(cmdbufnr, '$', 'saveDone_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:saveDone!79', l[-1])
+  sleep 1m
+  call assert_match('.*/Xfile4" 3L, 0C', v:statusmsg)
+  let g:last += 3
+
+  " unimplemented command test
+  call appendbufline(cmdbufnr, '$', 'invalidcmd_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:invalidcmd!80', l[-1])
+  let g:last += 3
+
+  " unimplemented function test
+  call appendbufline(cmdbufnr, '$', 'invalidfunc_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 3:invalidfunc/81', '81'], l[-2:])
+  let g:last += 4
+
+  " Test for removeAnno cmd failure
+  call appendbufline(cmdbufnr, '$', 'removeAnno_fail_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:removeAnno/82 1', '82'], l[-2:])
+  let g:last += 4
+
+  " Test for guard cmd failure
+  call appendbufline(cmdbufnr, '$', 'guard_fail_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:guard/83 1 1', '83'], l[-2:])
+  let g:last += 4
+
+  " Test for save cmd failure
+  call appendbufline(cmdbufnr, '$', 'save_fail_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:save/84', '84'], l[-2:])
+  let g:last += 4
+
+  " Test for netbeansBuffer cmd failure
+  call appendbufline(cmdbufnr, '$', 'netbeansBuffer_fail_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['send: 0:netbeansBuffer/85 T', '85'], l[-2:])
+  let g:last += 4
+
+  " nbkey test
+  call cursor(3, 3)
+  nbkey "\<C-F2>"
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal(['3:newDotAndMark=85 18 18',
+        \ '3:keyCommand=85 ""\<C-F2>""',
+        \ '3:keyAtPos=85 ""\<C-F2>"" 18 3/2'], l[-3:])
+  let g:last += 3
+
+  " setExitDelay test
+  call appendbufline(cmdbufnr, '$', 'setExitDelay_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:setExitDelay!86 2', l[-1])
+  let g:last += 3
+
+  " setReadonly test
+  call appendbufline(cmdbufnr, '$', 'setReadOnly_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:setReadOnly!87', l[-1])
+  let g:last += 3
+
+  " close test. Don't use buffer 10 after this
+  call appendbufline(cmdbufnr, '$', 'close_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 3:close!88', l[-2])
+  call assert_equal('3:killed=88', l[-1])
+  call assert_equal(1, winnr('$'))
+  let g:last += 4
+
+  " specialKeys test
+  call appendbufline(cmdbufnr, '$', 'specialKeys_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('send: 0:specialKeys!89 "F12 F13"', l[-1])
+  sleep 1m
+  call assert_equal(':nbkey F12<CR>', maparg('<F12>', 'n'))
+  call assert_equal(':nbkey F13<CR>', maparg('<F13>', 'n'))
+  let g:last += 3
+
+  " Open a buffer not monitored by netbeans
+  enew | only!
+  nbkey "\<C-F3>"
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 1)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('0:fileOpened=0 "" T F', l[-1])
+  let g:last += 1
+
+  " detach
+  call appendbufline(cmdbufnr, '$', 'detach_Test')
+  call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 6)')
+  let l = readfile('Xnetbeans')
+  call assert_equal('0:disconnect=91', l[-1])
+
+  " close the connection
   call assert_false(has("netbeans_enabled"))
-  let lines = readfile("Xnetbeans")
-  call assert_equal('AUTH bunny', lines[0])
-  call assert_equal('0:version=0 "2.5"', lines[1])
-  call assert_equal('0:startupDone=0', lines[2])
-  call assert_equal('0:fileOpened=0 "XREADME.txt" T F', substitute(lines[3], '".*/', '"', ''))
-
-  call assert_equal('0:disconnect=1', lines[6])
 
   call delete("Xnetbeans")
-  call delete("XREADME.txt")
+  call delete('Xfile1')
+  call delete('Xfile3')
 endfunc
 
 func Test_nb_basic()
@@ -82,3 +655,52 @@
   call ch_log('Test_nb_file_auth')
   call s:run_server('Nb_file_auth')
 endfunc
+
+" Test for quiting Vim with an open netbeans connection
+func Nb_quit_with_conn(port)
+  call delete("Xnetbeans")
+  call writefile([], "Xnetbeans")
+  let after =<< trim END
+    source shared.vim
+
+    " Establish the connection with the netbeans server
+    exe 'nbstart :localhost:' .. g:port .. ':star'
+    call assert_true(has("netbeans_enabled"))
+    call WaitFor('len(readfile("Xnetbeans")) >= 3')
+    let l = readfile("Xnetbeans")
+    call assert_equal(['AUTH star',
+      \ '0:version=0 "2.5"',
+      \ '0:startupDone=0'], l[-3:])
+
+    " Open the command buffer to communicate with the server
+    split Xcmdbuf
+    call WaitFor('len(readfile("Xnetbeans")) >= 6')
+    let l = readfile("Xnetbeans")
+    call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
+          \ substitute(l[-3], '".*/', '"', ''))
+    call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
+          \ substitute(l[-2], '".*/', '"', ''))
+    call assert_equal('1:startDocumentListen!16', l[-1])
+    sleep 1m
+
+    quit!
+    quit!
+  END
+  if RunVim(['let g:port = ' .. a:port], after, '')
+    call WaitFor('len(readfile("Xnetbeans")) >= 9')
+    let l = readfile('Xnetbeans')
+    call assert_equal('1:unmodified=16', l[-3])
+    call assert_equal('1:killed=16', l[-2])
+    call assert_equal('0:disconnect=16', l[-1])
+  endif
+  call delete('Xnetbeans')
+endfunc
+
+func Test_nb_quit_with_conn()
+  " Exiting Vim with a netbeans connection doesn't work properly on
+  " MS-Windows.
+  CheckUnix
+  call s:run_server('Nb_quit_with_conn')
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ae915db..ebe3b2c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    599,
+/**/
     598,
 /**/
     597,
