0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 8.2.0970: terminal properties are not available in Vim script

Problem:    Terminal properties are not available in Vim script.
Solution:   Add the terminalprops() function.
This commit is contained in:
Bram Moolenaar
2020-06-13 15:47:25 +02:00
parent 4a021dfbee
commit 0c0eddd3dd
11 changed files with 172 additions and 5 deletions

View File

@@ -922,6 +922,7 @@ endfunc
func Test_xx01_term_style_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
" send the termresponse to trigger requesting the XT codes
let seq = "\<Esc>[>41;337;0c"
@@ -932,7 +933,15 @@ func Test_xx01_term_style_response()
call feedkeys(seq, 'Lx!')
call assert_equal(seq, v:termstyleresp)
call assert_equal(#{
\ cursor_style: 'u',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
" This checks the iTerm2 version response.
@@ -941,6 +950,7 @@ endfunc
func Test_xx02_iTerm2_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
" Old versions of iTerm2 used a different style term response.
set ttymouse=xterm
@@ -957,7 +967,15 @@ func Test_xx02_iTerm2_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
" This checks the libvterm version response.
@@ -966,6 +984,7 @@ endfunc
func Test_xx03_libvterm_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
set ttymouse=xterm
call test_option_not_set('ttymouse')
@@ -974,7 +993,15 @@ func Test_xx03_libvterm_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
" This checks the Mac Terminal.app version response.
@@ -983,6 +1010,7 @@ endfunc
func Test_xx04_Mac_Terminal_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
set ttymouse=xterm
call test_option_not_set('ttymouse')
@@ -991,10 +1019,18 @@ func Test_xx04_Mac_Terminal_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'y',
\ mouse: 's'
\ }, terminalprops())
" Reset is_not_xterm and is_mac_terminal.
set t_RV=
set term=xterm
set t_RV=x
call test_override('term_props', 0)
endfunc
" This checks the mintty version response.
@@ -1003,6 +1039,7 @@ endfunc
func Test_xx05_mintty_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
set ttymouse=xterm
call test_option_not_set('ttymouse')
@@ -1011,7 +1048,15 @@ func Test_xx05_mintty_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'y',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
" This checks the screen version response.
@@ -1020,6 +1065,7 @@ endfunc
func Test_xx06_screen_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
" Old versions of screen don't support SGR mouse mode.
set ttymouse=xterm
@@ -1037,7 +1083,15 @@ func Test_xx06_screen_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'n',
\ underline_rgb: 'y',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
" This checks the xterm version response.
@@ -1046,6 +1100,7 @@ endfunc
func Test_xx07_xterm_response()
" Termresponse is only parsed when t_RV is not empty.
set t_RV=x
call test_override('term_props', 1)
" Do Terminal.app first to check that is_mac_terminal is reset.
set ttymouse=xterm
@@ -1066,6 +1121,13 @@ func Test_xx07_xterm_response()
call assert_equal(seq, v:termresponse)
call assert_equal('xterm', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'y',
\ mouse: 'u'
\ }, terminalprops())
" xterm >= 95 < 277 "xterm2"
set ttymouse=xterm
call test_option_not_set('ttymouse')
@@ -1074,6 +1136,13 @@ func Test_xx07_xterm_response()
call assert_equal(seq, v:termresponse)
call assert_equal('xterm2', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: '2'
\ }, terminalprops())
" xterm >= 277: "sgr"
set ttymouse=xterm
call test_option_not_set('ttymouse')
@@ -1082,7 +1151,30 @@ func Test_xx07_xterm_response()
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'n',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: 's'
\ }, terminalprops())
" xterm >= 279: "sgr" and cursor_style not reset
set ttymouse=xterm
call test_option_not_set('ttymouse')
let seq = "\<Esc>[>0;279;0c"
call feedkeys(seq, 'Lx!')
call assert_equal(seq, v:termresponse)
call assert_equal('sgr', &ttymouse)
call assert_equal(#{
\ cursor_style: 'u',
\ cursor_blink_mode: 'u',
\ underline_rgb: 'u',
\ mouse: 's'
\ }, terminalprops())
set t_RV=
call test_override('term_props', 0)
endfunc
func Test_get_termcode()