]> granicus.if.org Git - vim/commitdiff
patch 8.1.1248: no test for dec mouse v8.1.1248
authorBram Moolenaar <Bram@vim.org>
Thu, 2 May 2019 21:00:22 +0000 (23:00 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 2 May 2019 21:00:22 +0000 (23:00 +0200)
Problem:    No test for dec mouse.
Solution:   Add some tests for dec mouse.  Add "no_query_mouse".

runtime/doc/eval.txt
src/evalfunc.c
src/globals.h
src/os_unix.c
src/testdir/test_termcodes.vim
src/version.c

index f728c12cbb178c951bbac924be147e509e137b6b..8faf17f6395e736556a35d9e8e5d81c747d53436 100644 (file)
@@ -9805,6 +9805,8 @@ test_override({name}, {val})                              *test_override()*
                starting     reset the "starting" variable, see below
                nfa_fail     makes the NFA regexp engine fail to force a
                             fallback to the old engine
+               no_query_mouse  do not query the mouse position for "dec"
+                               terminals
                ALL          clear all overrides ({val} is not used)
 
                "starting" is to be used when a test should behave like
index e65ab94e384655a27eb582686e4b9336b8e4828e..2b1b1424c1e1a37e8d1089e5b3df2213d3a02af7 100644 (file)
@@ -14302,12 +14302,15 @@ f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
        }
        else if (STRCMP(name, (char_u *)"nfa_fail") == 0)
            nfa_fail_for_testing = val;
+       else if (STRCMP(name, (char_u *)"no_query_mouse") == 0)
+           no_query_mouse_for_testing = val;
        else if (STRCMP(name, (char_u *)"ALL") == 0)
        {
            disable_char_avail_for_testing = FALSE;
            disable_redraw_for_testing = FALSE;
            ignore_redraw_flag_for_testing = FALSE;
            nfa_fail_for_testing = FALSE;
+           no_query_mouse_for_testing = FALSE;
            if (save_starting >= 0)
            {
                starting = save_starting;
index fef30a7537cff0199e64871b2d3449502a84626a..1a055d6085dcfbac4ad712b1f8cb8dabe1d4bb68 100644 (file)
@@ -1613,11 +1613,12 @@ EXTERN int  alloc_fail_countdown INIT(= -1);
 /* set by alloc_fail(), number of times alloc() returns NULL */
 EXTERN int  alloc_fail_repeat INIT(= 0);
 
-/* flags set by test_override() */
+// flags set by test_override()
 EXTERN int  disable_char_avail_for_testing INIT(= FALSE);
 EXTERN int  disable_redraw_for_testing INIT(= FALSE);
 EXTERN int  ignore_redraw_flag_for_testing INIT(= FALSE);
 EXTERN int  nfa_fail_for_testing INIT(= FALSE);
+EXTERN int  no_query_mouse_for_testing INIT(= FALSE);
 
 EXTERN int  in_free_unref_items INIT(= FALSE);
 #endif
index 528089b90fdaa4fe83ea236f88974ad5fb5e2b13..a78b330f23b9d31c52f43d9be9538f2db5081c5e 100644 (file)
@@ -5940,7 +5940,8 @@ WaitForCharOrMouse(long msec, int *interrupted, int ignore_input)
     if (WantQueryMouse)
     {
        WantQueryMouse = FALSE;
-       mch_write((char_u *)IF_EB("\033[1'|", ESC_STR "[1'|"), 5);
+       if (!no_query_mouse_for_testing)
+           mch_write((char_u *)IF_EB("\033[1'|", ESC_STR "[1'|"), 5);
     }
 #endif
 
index 7c424cd11b72acacd83135e86930ec0984c06fe0..17c1534e884f82235740d213406c580f8f3af91e 100644 (file)
@@ -8,9 +8,16 @@ endif
 source shared.vim
 
 " xterm2 and sgr always work, urxvt is optional.
-let s:test_ttymouse = ['xterm2', 'sgr']
+let s:ttymouse_values = ['xterm2', 'sgr']
 if has('mouse_urxvt')
-  call add(s:test_ttymouse, 'urxvt')
+  call add(s:ttymouse_values, 'urxvt')
+endif
+
+" dec doesn't support all the functionality
+if has('mouse_dec')
+  let s:ttymouse_dec = ['dec']
+else
+  let s:ttymouse_dec = []
 endif
 
 " Helper function to emit a terminal escape code.
@@ -32,12 +39,24 @@ func TerminalEscapeCode(code, row, col, m)
   endif
 endfunc
 
+func DecEscapeCode(code, down, row, col)
+    call feedkeys(printf("\<Esc>[%d;%d;%d;%d&w", a:code, a:down, a:row, a:col), 'Lx!')
+endfunc
+
 func MouseLeftClick(row, col)
-  call TerminalEscapeCode(0, a:row, a:col, 'M')
+  if &ttymouse ==# 'dec'
+    call DecEscapeCode(2, 4, a:row, a:col)
+  else
+    call TerminalEscapeCode(0, a:row, a:col, 'M')
+  endif
 endfunc
 
 func MouseMiddleClick(row, col)
-  call TerminalEscapeCode(1, a:row, a:col, 'M')
+  if &ttymouse ==# 'dec'
+    call DecEscapeCode(4, 2, a:row, a:col)
+  else
+    call TerminalEscapeCode(1, a:row, a:col, 'M')
+  endif
 endfunc
 
 func MouseCtrlLeftClick(row, col)
@@ -51,11 +70,19 @@ func MouseCtrlRightClick(row, col)
 endfunc
 
 func MouseLeftRelease(row, col)
-  call TerminalEscapeCode(3, a:row, a:col, 'm')
+  if &ttymouse ==# 'dec'
+    call DecEscapeCode(3, 0, a:row, a:col)
+  else
+    call TerminalEscapeCode(3, a:row, a:col, 'm')
+  endif
 endfunc
 
 func MouseMiddleRelease(row, col)
-  call TerminalEscapeCode(3, a:row, a:col, 'm')
+  if &ttymouse ==# 'dec'
+    call DecEscapeCode(5, 0, a:row, a:col)
+  else
+    call TerminalEscapeCode(3, a:row, a:col, 'm')
+  endif
 endfunc
 
 func MouseRightRelease(row, col)
@@ -63,7 +90,11 @@ func MouseRightRelease(row, col)
 endfunc
 
 func MouseLeftDrag(row, col)
-  call TerminalEscapeCode(0x20, a:row, a:col, 'M')
+  if &ttymouse ==# 'dec'
+    call DecEscapeCode(1, 4, a:row, a:col)
+  else
+    call TerminalEscapeCode(0x20, a:row, a:col, 'M')
+  endif
 endfunc
 
 func MouseWheelUp(row, col)
@@ -74,15 +105,16 @@ func MouseWheelDown(row, col)
   call TerminalEscapeCode(0x41, a:row, a:col, 'M')
 endfunc
 
-func Test_xterm_mouse_left_click()
+func Test_term_mouse_left_click()
   new
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   set mouse=a term=xterm
   call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     go
@@ -97,6 +129,7 @@ func Test_xterm_mouse_left_click()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
   bwipe!
 endfunc
 
@@ -107,7 +140,7 @@ func Test_xterm_mouse_ctrl_click()
   let save_ttymouse = &ttymouse
   set mouse=a term=xterm
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     help
@@ -121,7 +154,7 @@ func Test_xterm_mouse_ctrl_click()
     call assert_equal('*usr_02.txt*', expand('<cWORD>'))
 
     call MouseCtrlRightClick(row, col)
-    call MouseLeftRelease(row, col)
+    call MouseRightRelease(row, col)
     call assert_match('help.txt$', bufname('%'), msg)
     call assert_equal('|usr_02.txt|', expand('<cWORD>'))
 
@@ -133,7 +166,7 @@ func Test_xterm_mouse_ctrl_click()
   let &ttymouse = save_ttymouse
 endfunc
 
-func Test_xterm_mouse_middle_click()
+func Test_term_mouse_middle_click()
   if !WorkingClipboard()
     throw 'Skipped: No working clipboard'
   endif
@@ -142,11 +175,12 @@ func Test_xterm_mouse_middle_click()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   let save_quotestar = @*
   let @* = 'abc'
   set mouse=a term=xterm
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     call setline(1, ['123456789', '123456789'])
@@ -175,11 +209,14 @@ func Test_xterm_mouse_middle_click()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
   let @* = save_quotestar
   bwipe!
 endfunc
 
-func Test_xterm_mouse_wheel()
+" TODO: for unclear reasons this test fails if it comes after
+" Test_xterm_mouse_ctrl_click()
+func Test_1xterm_mouse_wheel()
   new
   let save_mouse = &mouse
   let save_term = &term
@@ -187,7 +224,7 @@ func Test_xterm_mouse_wheel()
   set mouse=a term=xterm
   call setline(1, range(1, 100))
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     go
@@ -217,13 +254,14 @@ func Test_xterm_mouse_wheel()
   bwipe!
 endfunc
 
-func Test_xterm_mouse_drag_window_separator()
+func Test_term_mouse_drag_window_separator()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   set mouse=a term=xterm
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
 
@@ -271,16 +309,18 @@ func Test_xterm_mouse_drag_window_separator()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
 endfunc
 
-func Test_xterm_mouse_drag_statusline()
+func Test_term_mouse_drag_statusline()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   let save_laststatus = &laststatus
   set mouse=a term=xterm laststatus=2
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
 
@@ -311,17 +351,19 @@ func Test_xterm_mouse_drag_statusline()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
   let &laststatus = save_laststatus
 endfunc
 
-func Test_xterm_mouse_click_tab()
+func Test_term_mouse_click_tab()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   set mouse=a term=xterm
   let row = 1
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xfoo
@@ -359,17 +401,19 @@ func Test_xterm_mouse_click_tab()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
 endfunc
 
-func Test_xterm_mouse_click_X_to_close_tab()
+func Test_term_mouse_click_X_to_close_tab()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   set mouse=a term=xterm
   let row = 1
   let col = &columns
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     if ttymouse_val ==# 'xterm2' && col > 223
       " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported.
       continue
@@ -405,17 +449,19 @@ func Test_xterm_mouse_click_X_to_close_tab()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
 endfunc
 
-func Test_xterm_mouse_drag_to_move_tab()
+func Test_term_mouse_drag_to_move_tab()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   " Set 'mousetime' to 1 to avoid recognizing a double-click in the loop
   set mouse=a term=xterm mousetime=1
   let row = 1
 
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xtab1
@@ -451,13 +497,15 @@ func Test_xterm_mouse_drag_to_move_tab()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
   set mousetime&
 endfunc
 
-func Test_xterm_mouse_double_click_to_create_tab()
+func Test_term_mouse_double_click_to_create_tab()
   let save_mouse = &mouse
   let save_term = &term
   let save_ttymouse = &ttymouse
+  call test_override('no_query_mouse', 1)
   " Set 'mousetime' to a small value, so that double-click works but we don't
   " have to wait long to avoid a triple-click.
   set mouse=a term=xterm mousetime=100
@@ -465,7 +513,7 @@ func Test_xterm_mouse_double_click_to_create_tab()
   let col = 10
 
   let round = 0
-  for ttymouse_val in s:test_ttymouse
+  for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xtab1
@@ -507,6 +555,7 @@ func Test_xterm_mouse_double_click_to_create_tab()
   let &mouse = save_mouse
   let &term = save_term
   let &ttymouse = save_ttymouse
+  call test_override('no_query_mouse', 0)
   set mousetime&
 endfunc
 
index f3e646c0ac166b3be60ad007a820d73746db3373..70eb2ab37984a118a5e999cacd1f83719828d775 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1248,
 /**/
     1247,
 /**/