Patch 8.1.1248
Problem:    No test for dec mouse.
Solution:   Add some tests for dec mouse.  Add "no_query_mouse".
Files:      src/evalfunc.c, src/globals.h, src/os_unix.c,
            src/testdir/test_termcodes.vim, runtime/doc/eval.txt


*** ../vim-8.1.1247/src/evalfunc.c      2019-04-28 19:46:17.022060143 +0200
--- src/evalfunc.c      2019-05-02 22:23:44.186970564 +0200
***************
*** 14302,14313 ****
--- 14302,14316 ----
        }
        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;
*** ../vim-8.1.1247/src/globals.h       2019-04-28 22:25:03.240480046 +0200
--- src/globals.h       2019-05-02 22:24:08.050849053 +0200
***************
*** 1613,1623 ****
  /* set by alloc_fail(), number of times alloc() returns NULL */
  EXTERN int  alloc_fail_repeat INIT(= 0);
  
! /* 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  in_free_unref_items INIT(= FALSE);
  #endif
--- 1613,1624 ----
  /* set by alloc_fail(), number of times alloc() returns NULL */
  EXTERN int  alloc_fail_repeat INIT(= 0);
  
! // 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
*** ../vim-8.1.1247/src/os_unix.c       2019-04-28 22:50:36.157248454 +0200
--- src/os_unix.c       2019-05-02 22:24:41.454678795 +0200
***************
*** 5940,5946 ****
      if (WantQueryMouse)
      {
        WantQueryMouse = FALSE;
!       mch_write((char_u *)IF_EB("\033[1'|", ESC_STR "[1'|"), 5);
      }
  #endif
  
--- 5940,5947 ----
      if (WantQueryMouse)
      {
        WantQueryMouse = FALSE;
!       if (!no_query_mouse_for_testing)
!           mch_write((char_u *)IF_EB("\033[1'|", ESC_STR "[1'|"), 5);
      }
  #endif
  
*** ../vim-8.1.1247/src/testdir/test_termcodes.vim      2019-05-02 
21:12:15.800625684 +0200
--- src/testdir/test_termcodes.vim      2019-05-02 22:56:32.436832987 +0200
***************
*** 8,16 ****
  source shared.vim
  
  " xterm2 and sgr always work, urxvt is optional.
! let s:test_ttymouse = ['xterm2', 'sgr']
  if has('mouse_urxvt')
!   call add(s:test_ttymouse, 'urxvt')
  endif
  
  " Helper function to emit a terminal escape code.
--- 8,23 ----
  source shared.vim
  
  " xterm2 and sgr always work, urxvt is optional.
! let s:ttymouse_values = ['xterm2', 'sgr']
  if has('mouse_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,43 ****
    endif
  endfunc
  
  func MouseLeftClick(row, col)
!   call TerminalEscapeCode(0, a:row, a:col, 'M')
  endfunc
  
  func MouseMiddleClick(row, col)
!   call TerminalEscapeCode(1, a:row, a:col, 'M')
  endfunc
  
  func MouseCtrlLeftClick(row, col)
--- 39,62 ----
    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)
!   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)
!   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,61 ****
  endfunc
  
  func MouseLeftRelease(row, col)
!   call TerminalEscapeCode(3, a:row, a:col, 'm')
  endfunc
  
  func MouseMiddleRelease(row, col)
!   call TerminalEscapeCode(3, a:row, a:col, 'm')
  endfunc
  
  func MouseRightRelease(row, col)
--- 70,88 ----
  endfunc
  
  func MouseLeftRelease(row, col)
!   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)
!   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,69 ****
  endfunc
  
  func MouseLeftDrag(row, col)
!   call TerminalEscapeCode(0x20, a:row, a:col, 'M')
  endfunc
  
  func MouseWheelUp(row, col)
--- 90,100 ----
  endfunc
  
  func MouseLeftDrag(row, col)
!   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,88 ****
    call TerminalEscapeCode(0x41, a:row, a:col, 'M')
  endfunc
  
! func Test_xterm_mouse_left_click()
    new
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    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
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      go
--- 105,120 ----
    call TerminalEscapeCode(0x41, a:row, a:col, 'M')
  endfunc
  
! 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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      go
***************
*** 97,102 ****
--- 129,135 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
    bwipe!
  endfunc
  
***************
*** 107,113 ****
    let save_ttymouse = &ttymouse
    set mouse=a term=xterm
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      help
--- 140,146 ----
    let save_ttymouse = &ttymouse
    set mouse=a term=xterm
  
!   for ttymouse_val in s:ttymouse_values
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      help
***************
*** 121,127 ****
      call assert_equal('*usr_02.txt*', expand('<cWORD>'))
  
      call MouseCtrlRightClick(row, col)
!     call MouseLeftRelease(row, col)
      call assert_match('help.txt$', bufname('%'), msg)
      call assert_equal('|usr_02.txt|', expand('<cWORD>'))
  
--- 154,160 ----
      call assert_equal('*usr_02.txt*', expand('<cWORD>'))
  
      call MouseCtrlRightClick(row, col)
!     call MouseRightRelease(row, col)
      call assert_match('help.txt$', bufname('%'), msg)
      call assert_equal('|usr_02.txt|', expand('<cWORD>'))
  
***************
*** 133,139 ****
    let &ttymouse = save_ttymouse
  endfunc
  
! func Test_xterm_mouse_middle_click()
    if !WorkingClipboard()
      throw 'Skipped: No working clipboard'
    endif
--- 166,172 ----
    let &ttymouse = save_ttymouse
  endfunc
  
! func Test_term_mouse_middle_click()
    if !WorkingClipboard()
      throw 'Skipped: No working clipboard'
    endif
***************
*** 142,152 ****
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    let save_quotestar = @*
    let @* = 'abc'
    set mouse=a term=xterm
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      call setline(1, ['123456789', '123456789'])
--- 175,186 ----
    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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      call setline(1, ['123456789', '123456789'])
***************
*** 175,185 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
    let @* = save_quotestar
    bwipe!
  endfunc
  
! func Test_xterm_mouse_wheel()
    new
    let save_mouse = &mouse
    let save_term = &term
--- 209,222 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
    let @* = save_quotestar
    bwipe!
  endfunc
  
! " 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,193 ****
    set mouse=a term=xterm
    call setline(1, range(1, 100))
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      go
--- 224,230 ----
    set mouse=a term=xterm
    call setline(1, range(1, 100))
  
!   for ttymouse_val in s:ttymouse_values
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      go
***************
*** 217,229 ****
    bwipe!
  endfunc
  
! func Test_xterm_mouse_drag_window_separator()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    set mouse=a term=xterm
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
  
--- 254,267 ----
    bwipe!
  endfunc
  
! 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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
  
***************
*** 271,286 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
  endfunc
  
! func Test_xterm_mouse_drag_statusline()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    let save_laststatus = &laststatus
    set mouse=a term=xterm laststatus=2
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
  
--- 309,326 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
  endfunc
  
! 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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
  
***************
*** 311,327 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
    let &laststatus = save_laststatus
  endfunc
  
! func Test_xterm_mouse_click_tab()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    set mouse=a term=xterm
    let row = 1
  
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xfoo
--- 351,369 ----
    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_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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xfoo
***************
*** 359,375 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
  endfunc
  
! func Test_xterm_mouse_click_X_to_close_tab()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    set mouse=a term=xterm
    let row = 1
    let col = &columns
  
!   for ttymouse_val in s:test_ttymouse
      if ttymouse_val ==# 'xterm2' && col > 223
        " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not 
supported.
        continue
--- 401,419 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
  endfunc
  
! 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: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,421 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
  endfunc
  
! func Test_xterm_mouse_drag_to_move_tab()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    " 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
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xtab1
--- 449,467 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
  endfunc
  
! 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:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xtab1
***************
*** 451,463 ****
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
    set mousetime&
  endfunc
  
! func Test_xterm_mouse_double_click_to_create_tab()
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
    " 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
--- 497,511 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
    set mousetime&
  endfunc
  
! 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,471 ****
    let col = 10
  
    let round = 0
!   for ttymouse_val in s:test_ttymouse
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xtab1
--- 513,519 ----
    let col = 10
  
    let round = 0
!   for ttymouse_val in s:ttymouse_values + s:ttymouse_dec
      let msg = 'ttymouse=' .. ttymouse_val
      exe 'set ttymouse=' .. ttymouse_val
      e Xtab1
***************
*** 507,512 ****
--- 555,561 ----
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
+   call test_override('no_query_mouse', 0)
    set mousetime&
  endfunc
  
*** ../vim-8.1.1247/runtime/doc/eval.txt        2019-04-27 20:36:52.526303597 
+0200
--- runtime/doc/eval.txt        2019-05-02 22:22:22.267386667 +0200
***************
*** 9744,9749 ****
--- 9805,9812 ----
                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
*** ../vim-8.1.1247/src/version.c       2019-05-02 21:12:15.800625684 +0200
--- src/version.c       2019-05-02 22:57:23.900566422 +0200
***************
*** 769,770 ****
--- 769,772 ----
  {   /* Add new patch number below this line */
+ /**/
+     1248,
  /**/

-- 
TALL KNIGHT: When you have found the shrubbery, then you must cut down the
             mightiest tree in the forest ... with a herring.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui