forked from aniani/vim
patch 9.1.1068: getchar() can't distinguish between C-I and Tab
Problem: getchar() can't distinguish between C-I and Tab.
Solution: Add {opts} to pass extra flags to getchar() and getcharstr(),
with "number" and "simplify" keys.
related: #10603
closes: #16554
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
cbc1f409c1
commit
e0a2ab397f
@@ -2562,6 +2562,75 @@ func Test_getchar()
|
||||
call assert_equal("\<M-F2>", getchar(0))
|
||||
call assert_equal(0, getchar(0))
|
||||
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal(char2nr("\<Tab>"), getchar())
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal(char2nr("\<Tab>"), getchar(-1))
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal(char2nr("\<Tab>"), getchar(-1, {}))
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal(char2nr("\<Tab>"), getchar(-1, #{number: v:true}))
|
||||
call assert_equal(0, getchar(0))
|
||||
call assert_equal(0, getchar(1))
|
||||
call assert_equal(0, getchar(0, #{number: v:true}))
|
||||
call assert_equal(0, getchar(1, #{number: v:true}))
|
||||
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal("\<Tab>", getcharstr())
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal("\<Tab>", getcharstr(-1))
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal("\<Tab>", getcharstr(-1, {}))
|
||||
call feedkeys("\<Tab>", '')
|
||||
call assert_equal("\<Tab>", getchar(-1, #{number: v:false}))
|
||||
call assert_equal('', getcharstr(0))
|
||||
call assert_equal('', getcharstr(1))
|
||||
call assert_equal('', getchar(0, #{number: v:false}))
|
||||
call assert_equal('', getchar(1, #{number: v:false}))
|
||||
|
||||
for key in ["C-I", "C-X", "M-x"]
|
||||
let lines =<< eval trim END
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal(char2nr("\<{key}>"), getchar())
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal(char2nr("\<{key}>"), getchar(-1))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal(char2nr("\<{key}>"), getchar(-1, {{}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal(char2nr("\<{key}>"), getchar(-1, {{'number': 1}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal(char2nr("\<{key}>"), getchar(-1, {{'simplify': 1}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<*{key}>", getchar(-1, {{'simplify': v:false}}))
|
||||
call assert_equal(0, getchar(0))
|
||||
call assert_equal(0, getchar(1))
|
||||
END
|
||||
call v9.CheckLegacyAndVim9Success(lines)
|
||||
|
||||
let lines =<< eval trim END
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<{key}>", getcharstr())
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<{key}>", getcharstr(-1))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<{key}>", getcharstr(-1, {{}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<{key}>", getchar(-1, {{'number': 0}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<{key}>", getcharstr(-1, {{'simplify': 1}}))
|
||||
call feedkeys("\<*{key}>", '')
|
||||
call assert_equal("\<*{key}>", getcharstr(-1, {{'simplify': v:false}}))
|
||||
call assert_equal('', getcharstr(0))
|
||||
call assert_equal('', getcharstr(1))
|
||||
END
|
||||
call v9.CheckLegacyAndVim9Success(lines)
|
||||
endfor
|
||||
|
||||
call assert_fails('call getchar(1, 1)', 'E1206:')
|
||||
call assert_fails('call getcharstr(1, 1)', 'E1206:')
|
||||
call assert_fails('call getcharstr(1, #{number: v:true})', 'E475:')
|
||||
call assert_fails('call getcharstr(1, #{number: v:false})', 'E475:')
|
||||
|
||||
call setline(1, 'xxxx')
|
||||
call test_setmouse(1, 3)
|
||||
let v:mouse_win = 9
|
||||
|
||||
Reference in New Issue
Block a user