mirror of
https://github.com/neovim/neovim.git
synced 2025-12-10 00:22:41 +00:00
ex_getln: add secret charm
Opt in to this secret world using
set wildchar=0
" already the default, but remove if non-zero existing config:
set wildcharm=0
now you can map 'wildmode' just like any mode:
cnoremap <tab> <c-z>
function! Spacey()
return getcmdline()[-1:] == "/" ? "\<bs>" : ""
endfunc
cnoremap <expr> / wildmenumode() ? Spacey()."/<c-z>" : "/"
Possibly asked questions:
What about backwards compatibility?
====
Just do nothing and your existing 'wildchar' and 'wildcharm' will keep working.
Doesn't `<c-z>` mean suspend?
====
Not in cmdline mode. If it would then the recommended wildcharm would not
have been `<c-z>` to start with.
My config relies on `:<c-z>` being a synonym to `:<nop>`!
====
just no.
This commit is contained in:
@@ -442,6 +442,7 @@ function module.new_argv(...)
|
||||
'NVIM_LOG_FILE',
|
||||
'NVIM_RPLUGIN_MANIFEST',
|
||||
'GCOV_ERROR_FILE',
|
||||
'XDG_DATA_DIRS',
|
||||
'TMPDIR',
|
||||
}) do
|
||||
if not env_tbl[k] then
|
||||
|
||||
@@ -3,6 +3,7 @@ local Screen = require('test.functional.ui.screen')
|
||||
local clear, feed, command = helpers.clear, helpers.feed, helpers.command
|
||||
local iswin = helpers.iswin
|
||||
local funcs = helpers.funcs
|
||||
local meths = helpers.meths
|
||||
local eq = helpers.eq
|
||||
local eval = helpers.eval
|
||||
local retry = helpers.retry
|
||||
@@ -396,6 +397,64 @@ describe("'wildmenu'", function()
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
||||
it('works with c_CTRL_Z standard mapping', function()
|
||||
screen:set_default_attr_ids {
|
||||
[1] = {bold = true, foreground = Screen.colors.Blue1};
|
||||
[2] = {foreground = Screen.colors.Grey0, background = Screen.colors.Yellow};
|
||||
[3] = {bold = true, reverse = true};
|
||||
}
|
||||
|
||||
-- Wildcharm? where we are going we aint't no need no wildcharm.
|
||||
eq(0, meths.get_option'wildcharm')
|
||||
-- Don't mess the defaults yet (neovim is about backwards compatibility)
|
||||
eq(9, meths.get_option'wildchar')
|
||||
-- Lol what is cnoremap? Some say it can define mappings.
|
||||
command 'set wildchar=0'
|
||||
eq(0, meths.get_option'wildchar')
|
||||
|
||||
command 'cnoremap <f2> <c-z>'
|
||||
feed(':syntax <f2>')
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{2:case}{3: clear cluster > }|
|
||||
:syntax case^ |
|
||||
]]}
|
||||
feed '<esc>'
|
||||
|
||||
command 'set wildmode=longest:full,full'
|
||||
-- this will get cleaner once we have native lua expr mappings:
|
||||
command [[cnoremap <expr> <tab> luaeval("not rawset(_G, 'coin', not coin).coin") ? "<c-z>" : "c"]]
|
||||
|
||||
feed ':syntax <tab>'
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
:syntax c^ |
|
||||
]]}
|
||||
|
||||
feed '<tab>'
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{3:case clear cluster > }|
|
||||
:syntax c^ |
|
||||
]]}
|
||||
|
||||
feed '<tab>'
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
:syntax cc^ |
|
||||
]]}
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('command line completion', function()
|
||||
|
||||
Reference in New Issue
Block a user