summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-05-02 23:00:22 +0200
committerBram Moolenaar <Bram@vim.org>2019-05-02 23:00:22 +0200
commit92fd599e0d85bdd7462926b2e5bcf7ce65fccc50 (patch)
tree98ec9508059d063c2bc4107ef7127bcc6da4e8cf /src
parentd0621d85a6ceb17e1e6fb17415c3f94a755aaafa (diff)
downloadvim-git-92fd599e0d85bdd7462926b2e5bcf7ce65fccc50.tar.gz
patch 8.1.1248: no test for dec mousev8.1.1248
Problem: No test for dec mouse. Solution: Add some tests for dec mouse. Add "no_query_mouse".
Diffstat (limited to 'src')
-rw-r--r--src/evalfunc.c3
-rw-r--r--src/globals.h3
-rw-r--r--src/os_unix.c3
-rw-r--r--src/testdir/test_termcodes.vim103
-rw-r--r--src/version.c2
5 files changed, 85 insertions, 29 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index e65ab94e3..2b1b1424c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -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;
diff --git a/src/globals.h b/src/globals.h
index fef30a753..1a055d608 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -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
diff --git a/src/os_unix.c b/src/os_unix.c
index 528089b90..a78b330f2 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -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
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index 7c424cd11..17c1534e8 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index f3e646c0a..70eb2ab37 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1248,
+/**/
1247,
/**/
1246,