diff --git a/src/mouse.c b/src/mouse.c
index 7b1bedc..10b991b 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -2929,10 +2929,12 @@
 
     // skip line number and fold column in front of the line
     col -= win_col_off(win);
-    if (col < 0)
+    if (col <= 0)
     {
 #ifdef FEAT_NETBEANS_INTG
-	netbeans_gutter_click(lnum);
+	// if mouse is clicked on the gutter, then inform the netbeans server
+	if (*colp < win_col_off(win))
+	    netbeans_gutter_click(lnum);
 #endif
 	col = 0;
     }
diff --git a/src/testdir/test_netbeans.py b/src/testdir/test_netbeans.py
index 6dc9b4e..112602a 100644
--- a/src/testdir/test_netbeans.py
+++ b/src/testdir/test_netbeans.py
@@ -41,6 +41,8 @@
             elif re.match('1:insert=.* "\\\\n"', line):
                 # extract the command from the previous line
                 cmd = re.search('.*"(.*)"', self.prev_line).group(1)
+
+                # map of test names and the netbeans commands/functions
                 testmap = {
                   'getCursor_Test' : '0:getCursor/30\n',
                   'E627_Test' : '0 setReadOnly!31\n',
@@ -70,6 +72,7 @@
                   'getModified_Test' : '2:getModified/55\n',
                   'getText_Test' : '2:getText/56\n',
                   'setDot_Test' : '2:setDot!57 3/6\n',
+                  'setDot2_Test' : '2:setDot!57 9\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',
@@ -90,6 +93,7 @@
                   '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',
+                  'setModifiedClear_Test' : '3:setModified!77 F\n',
                   'insertDone_Test' : '3:insertDone!78 T F\n',
                   'saveDone_Test' : '3:saveDone!79\n',
                   'invalidcmd_Test' : '3:invalidcmd!80\n',
@@ -99,11 +103,16 @@
                   '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',
-                  'nbbufwrite_Test' : '4:editFile!90 "XnbBuffer"\n4:netbeansBuffer!91 T\n',
-                  'detach_Test' : '2:close!92\n1:close!93\nDETACH\n'
+                  'setReadOnly_Test' : '3:setReadOnly!87 T\n',
+                  'setReadOnlyClear_Test' : '3:setReadOnly!88 F\n',
+                  'save_Test' : '3:save!89\n',
+                  'close_Test' : '3:close!90\n',
+                  'specialKeys_Test' : '0:specialKeys!91 "F12 F13 C-F13"\n',
+                  'nbbufwrite_Test' : '4:editFile!92 "XnbBuffer"\n4:netbeansBuffer!93 T\n',
+                  'startAtomic_Test' : '0:startAtomic!94\n',
+                  'endAtomic_Test' : '0:endAtomic!95\n',
+                  'AnnoScale_Test' : "".join(['2:defineAnnoType!60 ' + str(i) + ' "s' + str(i) + '" "x" "=>" blue none\n' for i in range(2, 26)]),
+                  'detach_Test' : '2:close!96\n1:close!97\nDETACH\n'
                 }
                 # execute the specified test
                 if cmd not in testmap:
diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim
index 75e974d..c4851ae 100644
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -303,11 +303,22 @@
         \ '56 "foo bar1\nfoo bar2\nfoo bar3\n"'], l[-2:])
   let g:last += 4
 
-  " setDot test
+  " setDot test with lnum/col
+  call cursor(1, 1)
   call appendbufline(cmdbufnr, '$', 'setDot_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
   let l = ReadXnetbeans()
   call assert_equal('send: 2:setDot!57 3/6', l[-1])
+  call assert_equal([0, 3, 7, 0], getpos('.'))
+  let g:last += 3
+
+  " setDot test with an offset
+  call cursor(1, 1)
+  call appendbufline(cmdbufnr, '$', 'setDot2_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 2:setDot!57 9', l[-1])
+  call assert_equal([0, 2, 1, 0], getpos('.'))
   let g:last += 3
 
   " startDocumentListen test
@@ -328,6 +339,32 @@
   call assert_match('2:remove=\d\+ 0 9', l[-1])
   let g:last += 3
 
+  " Change case using the ~ command with 'whichwrap' containing '~'
+  set whichwrap+=~
+  normal 2G$~
+  set whichwrap&
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
+  let l = ReadXnetbeans()
+  call assert_match('2:remove=\d\+ 16 1', l[-4])
+  call assert_match('2:insert=\d\+ 16 "Y"', l[-3])
+  call assert_match('2:remove=\d\+ 18 0', l[-2])
+  call assert_match('2:insert=\d\+ 18 ""', l[-1])
+  let g:last += 4
+
+  " Test for replacing spaces with a tab character using 'softtabstop' and
+  " 'noexpandtab'
+  setlocal softtabstop=4
+  setlocal noexpandtab
+  exe "normal I\<Tab>\<Tab>"
+  setlocal expandtab&
+  setlocal softtabstop&
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 18)')
+  let l = ReadXnetbeans()
+  call assert_match('2:insert=\d\+ 18 "        foo bar3"', l[-3])
+  call assert_match('2:remove=\d\+ 26 8', l[-2])
+  call assert_match('2:insert=\d\+ 26 "\t"', l[-1])
+  let g:last += 18
+
   " stopDocumentListen test
   call appendbufline(cmdbufnr, '$', 'stopDocumentListen_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
@@ -491,8 +528,9 @@
   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 s = sign_getplaced()[0].signs[0]
+  call assert_equal(2, s.lnum)
+  call assert_equal('10000', s.name)
   let g:last += 3
 
   " setModified test
@@ -500,9 +538,19 @@
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
   let l = ReadXnetbeans()
   call assert_equal('send: 3:setModified!77 T', l[-1])
+  sleep 1m
   call assert_equal(1, &modified)
   let g:last += 3
 
+  " clear setModified test
+  call appendbufline(cmdbufnr, '$', 'setModifiedClear_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 3:setModified!77 F', l[-1])
+  sleep 1m
+  call assert_equal(0, &modified)
+  let g:last += 3
+
   " insertDone test
   let v:statusmsg = ''
   call appendbufline(cmdbufnr, '$', 'insertDone_Test')
@@ -586,15 +634,36 @@
   call appendbufline(cmdbufnr, '$', 'setReadOnly_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
   let l = ReadXnetbeans()
-  call assert_equal('send: 3:setReadOnly!87', l[-1])
+  call assert_equal('send: 3:setReadOnly!87 T', l[-1])
+  sleep 1m
+  call assert_equal(1, &readonly)
+  let g:last += 3
+
+  " clear setReadonly test
+  call appendbufline(cmdbufnr, '$', 'setReadOnlyClear_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 3:setReadOnly!88 F', l[-1])
+  sleep 1m
+  call assert_equal(0, &readonly)
+  let g:last += 3
+
+  " save test
+  call setbufvar(bufnr('Xfile4'), '&modified', 1)
+  call appendbufline(cmdbufnr, '$', 'save_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 3:save!89', l[-1])
+  sleep 1m
+  call assert_true(filereadable('Xfile4'))
   let g:last += 3
 
   " close test. Don't use buffer 10 after this
   call appendbufline(cmdbufnr, '$', 'close_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
   let l = ReadXnetbeans()
-  call assert_equal('send: 3:close!88', l[-2])
-  call assert_equal('3:killed=88', l[-1])
+  call assert_equal('send: 3:close!90', l[-2])
+  call assert_equal('3:killed=90', l[-1])
   call assert_equal(1, winnr('$'))
   let g:last += 4
 
@@ -602,10 +671,11 @@
   call appendbufline(cmdbufnr, '$', 'specialKeys_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
   let l = ReadXnetbeans()
-  call assert_equal('send: 0:specialKeys!89 "F12 F13"', l[-1])
+  call assert_equal('send: 0:specialKeys!91 "F12 F13 C-F13"', l[-1])
   sleep 1m
   call assert_equal(':nbkey F12<CR>', maparg('<F12>', 'n'))
   call assert_equal(':nbkey F13<CR>', maparg('<F13>', 'n'))
+  call assert_equal(':nbkey C-F13<CR>', maparg('<C-F13>', 'n'))
   let g:last += 3
 
   " Open a buffer not monitored by netbeans
@@ -626,17 +696,110 @@
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 10)')
   let g:last += 10
 
+  if has('mouse')
+    " Test for mouse button release
+    let save_mouse = &mouse
+    set mouse=a
+    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
+    let &mouse = save_mouse
+    call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
+    let l = ReadXnetbeans()
+    call assert_equal('4:newDotAndMark=93 0 0', l[-2])
+    call assert_equal('4:buttonRelease=93 0 1 -1', l[-1])
+    let g:last += 2
+  endif
+
+  " Test for startAtomic
+  call appendbufline(cmdbufnr, '$', 'startAtomic_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 0:startAtomic!94', l[-1])
+  let g:last += 3
+
+  " Test for endAtomic
+  call appendbufline(cmdbufnr, '$', 'endAtomic_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_equal('send: 0:endAtomic!95', l[-1])
+  let g:last += 3
+
+  " Test for invoking a netbeans key binding
+  let special_keys = [
+        \ ["\<F1>", 'F1'], ["\<S-F1>", 'S-F1'],
+        \ ["\<F2>", 'F2'], ["\<S-F2>", 'S-F2'],
+        \ ["\<F3>", 'F3'], ["\<S-F3>", 'S-F3'],
+        \ ["\<F4>", 'F4'], ["\<S-F4>", 'S-F4'],
+        \ ["\<F5>", 'F5'], ["\<S-F5>", 'S-F5'],
+        \ ["\<F6>", 'F6'], ["\<S-F6>", 'S-F6'],
+        \ ["\<F7>", 'F7'], ["\<S-F7>", 'S-F7'],
+        \ ["\<F8>", 'F8'], ["\<S-F8>", 'S-F8'],
+        \ ["\<F9>", 'F9'], ["\<S-F9>", 'S-F9'],
+        \ ["\<F11>", 'F11'], ["\<S-F11>", 'S-F11'],
+        \ ["\<F12>", 'F12'], ["\<S-F12>", 'S-F12'], ['!', '!']
+        \ ]
+  for [key, name] in special_keys
+    call feedkeys("\<F21>" .. key, 'xt')
+    call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+    let l = ReadXnetbeans()
+    call assert_match('4:keyCommand=\d\+ "' .. name .. '"', l[-2])
+    call assert_match('4:keyAtPos=\d\+ "' .. name .. '" 0 1/0', l[-1])
+    let g:last += 3
+  endfor
+  call feedkeys("\<F21>\<C-S-M-F9>", 'xt')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
+  let l = ReadXnetbeans()
+  call assert_match('4:keyCommand=\d\+ "CSM-F9"', l[-2])
+  call assert_match('4:keyAtPos=\d\+ "CSM-F9" 0 1/0', l[-1])
+  let g:last += 3
+
+  if has('signs') && has('mouse')
+    sign define S1 linehl=Search text==>
+    sign define S2 linehl=ErrorMsg text=!!
+    sign place 10 line=1 name=S1
+    sign place 20 line=1 name=S2
+
+    let save_mouse = &mouse
+    set mouse=a
+    call assert_equal('S2', sign_getplaced()[0].signs[0].name)
+    call test_setmouse(1, 1)
+    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
+    call assert_equal('S1', sign_getplaced()[0].signs[0].name)
+    call test_setmouse(1, 1)
+    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
+    call assert_equal('S2', sign_getplaced()[0].signs[0].name)
+    let &mouse = save_mouse
+
+    sign unplace 10
+    sign unplace 20
+    sign undefine S1
+    sign undefine S2
+  endif
+
+  " define a large number of annotations
+  call appendbufline(cmdbufnr, '$', 'AnnoScale_Test')
+  call WaitFor('len(ReadXnetbeans()) >= (g:last + 26)')
+  let l = ReadXnetbeans()
+  call assert_equal('2:defineAnnoType!60 25 "s25" "x" "=>" blue none', l[-1])
+  sleep 1m
+  call assert_true(len(sign_getdefined()) >= 25)
+  let g:last += 26
+
   " detach
   call appendbufline(cmdbufnr, '$', 'detach_Test')
   call WaitFor('len(ReadXnetbeans()) >= (g:last + 8)')
-  call WaitForAssert({-> assert_equal('0:disconnect=93', ReadXnetbeans()[-1])})
+  call WaitForAssert({-> assert_equal('0:disconnect=97', ReadXnetbeans()[-1])})
 
   " the connection was closed
   call assert_false(has("netbeans_enabled"))
 
+  " Remove all the signs
+  call sign_unplace('*')
+  call sign_undefine()
+
   call delete("Xnetbeans")
   call delete('Xfile1')
   call delete('Xfile3')
+  call delete('Xfile4')
 endfunc
 
 func Test_nb_basic()
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 88eabaa..196aa1d 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -3949,6 +3949,10 @@
     au BufEnter * call setqflist([], 'f')
   augroup END
   call assert_fails('helpgrep quickfix', 'E925:')
+  " run the test with a help window already open
+  help
+  wincmd w
+  call assert_fails('helpgrep quickfix', 'E925:')
   augroup QF_Test
     au! BufEnter
   augroup END
diff --git a/src/version.c b/src/version.c
index 279837b..7591c83 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1942,
+/**/
     1941,
 /**/
     1940,
