mirror of
https://github.com/neovim/neovim.git
synced 2026-05-24 13:50:06 +00:00
Problem: Assuming modifyOtherKeys for rhs of mapping.
Solution: Ignore seenModifyOtherKeys for mapped characters. (closes vim/vim#6200)
46cd43bda1
----
"getchar.c" changes depend on patch 8.1.2145.
Can't port it due to tests.
"test_gui.vim" doesn't depend on GUI for all tests.
----
Co-authored-by: Bram Moolenaar <Bram@vim.org>
91 lines
2.9 KiB
VimL
91 lines
2.9 KiB
VimL
|
|
func SetUp()
|
|
source $VIMRUNTIME/menu.vim
|
|
endfunc
|
|
|
|
func Test_colorscheme()
|
|
" call assert_equal('16777216', &t_Co)
|
|
|
|
let colorscheme_saved = exists('g:colors_name') ? g:colors_name : 'default'
|
|
let g:color_count = 0
|
|
augroup TestColors
|
|
au!
|
|
au ColorScheme * let g:color_count += 1
|
|
\ | let g:after_colors = g:color_count
|
|
\ | let g:color_after = expand('<amatch>')
|
|
au ColorSchemePre * let g:color_count += 1
|
|
\ | let g:before_colors = g:color_count
|
|
\ | let g:color_pre = expand('<amatch>')
|
|
augroup END
|
|
|
|
colorscheme torte
|
|
redraw!
|
|
call assert_equal('dark', &background)
|
|
call assert_equal(1, g:before_colors)
|
|
call assert_equal(2, g:after_colors)
|
|
call assert_equal('torte', g:color_pre)
|
|
call assert_equal('torte', g:color_after)
|
|
call assert_equal("\ntorte", execute('colorscheme'))
|
|
|
|
let a = substitute(execute('hi Search'), "\n\\s\\+", ' ', 'g')
|
|
" FIXME: temporarily check less while the colorscheme changes
|
|
" call assert_match("\nSearch xxx term=reverse cterm=reverse ctermfg=196 ctermbg=16 gui=reverse guifg=#ff0000 guibg=#000000", a)
|
|
" call assert_match("\nSearch xxx term=reverse ", a)
|
|
|
|
call assert_fails('colorscheme does_not_exist', 'E185:')
|
|
call assert_equal('does_not_exist', g:color_pre)
|
|
call assert_equal('torte', g:color_after)
|
|
|
|
exec 'colorscheme' colorscheme_saved
|
|
augroup TestColors
|
|
au!
|
|
augroup END
|
|
unlet g:color_count g:after_colors g:before_colors
|
|
redraw!
|
|
endfunc
|
|
|
|
func Test_gui_recursive_mapping()
|
|
nmap ' <C-W>
|
|
nmap <C-W>a :let didit = 1<CR>
|
|
call feedkeys("'a", 'xt')
|
|
call assert_equal(1, didit)
|
|
|
|
nunmap '
|
|
nunmap <C-W>a
|
|
endfunc
|
|
|
|
" Test that Buffers menu generates the correct index for different buffer
|
|
" names for sorting.
|
|
func Test_Buffers_Menu()
|
|
doautocmd LoadBufferMenu VimEnter
|
|
|
|
" Non-ASCII characters only use the first character as idx
|
|
let idx_emoji = or(char2nr('😑'), 0x40000000)
|
|
|
|
" Only first five letters are used for alphanumeric:
|
|
" ('a'-32) << 24 + ('b'-32) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('e'-32)
|
|
let idx_abcde = 0x218A3925
|
|
" ('a'-32) << 24 + ('b'-32) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('f'-32)
|
|
let idx_abcdf = 0x218A3926
|
|
" ('a'-32) << 24 + 63 (clamped) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('e'-32)
|
|
let idx_a_emoji_cde = 0x21FE3925
|
|
|
|
let names = ['😑', '😑1', '😑2', 'abcde', 'abcdefghi', 'abcdf', 'a😑cde']
|
|
let indices = [idx_emoji, idx_emoji, idx_emoji, idx_abcde, idx_abcde, idx_abcdf, idx_a_emoji_cde]
|
|
for i in range(len(names))
|
|
let name = names[i]
|
|
let idx = indices[i]
|
|
exe ':badd ' .. name
|
|
let nr = bufnr('$')
|
|
|
|
let cmd = printf(':amenu Buffers.%s\ (%d)', name, nr)
|
|
let menu = split(execute(cmd), '\n')[1]
|
|
call assert_inrange(0, 0x7FFFFFFF, idx)
|
|
call assert_match('^' .. idx .. ' '.. name, menu)
|
|
endfor
|
|
|
|
%bw!
|
|
endfunc
|
|
|
|
" vim: shiftwidth=2 sts=2 expandtab
|