mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 14:11:15 -07:00
5ad619a847
A menu item can have separate bindings for each Vim mode. :emenu checks to see which binding it should execute. But, it assumes it can only be called from Normal mode, so its mode detection is based on some guesswork. For instance, it detects if you've just used C-O and, if so, uses the Insert mode binding. Now that :emenu can be called from any mode (via vim_command), this commit has it check the actual mode we're in, and simply use the binding for that mode if we aren't in Normal mode.
39 lines
959 B
Lua
39 lines
959 B
Lua
local helpers = require('test.functional.helpers')
|
|
local clear, execute, nvim = helpers.clear, helpers.execute, helpers.nvim
|
|
local expect = helpers.expect
|
|
local feed = helpers.feed
|
|
local command = helpers.command
|
|
|
|
describe(':emenu', function()
|
|
|
|
before_each(function()
|
|
clear()
|
|
execute('nnoremenu Test.Test inormal<ESC>')
|
|
execute('inoremenu Test.Test insert')
|
|
execute('vnoremenu Test.Test x')
|
|
end)
|
|
|
|
it('executes correct bindings in normal mode without using API', function()
|
|
execute('emenu Test.Test')
|
|
expect('normal')
|
|
end)
|
|
|
|
it('executes correct bindings in normal mode', function()
|
|
command('emenu Test.Test')
|
|
expect('normal')
|
|
end)
|
|
|
|
it('executes correct bindings in insert mode', function()
|
|
feed('i')
|
|
command('emenu Test.Test')
|
|
expect('insert')
|
|
end)
|
|
|
|
it('executes correct bindings in visual mode', function()
|
|
feed('iabcde<ESC>0lvll')
|
|
command('emenu Test.Test')
|
|
expect('ae')
|
|
end)
|
|
|
|
end)
|