mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 10:40:03 +08:00
feat(recordkey): support nvim 0.10.0
This commit is contained in:
parent
f07c2e3e31
commit
f6e07c5659
@ -122,6 +122,8 @@ function! s:fix_colorschem_in_SpaceVim() abort
|
||||
hi VertSplit guibg=#282828 guifg=#181A1F
|
||||
elseif g:colors_name ==# 'one'
|
||||
hi VertSplit guibg=#282c34 guifg=#181A1F
|
||||
hi SPCFloatBorder guibg=#282c34 guifg=#181A1F
|
||||
hi SPCNormalFloat guifg=#abb2bf guibg=#282c34
|
||||
elseif g:colors_name ==# 'jellybeans'
|
||||
hi VertSplit guibg=#151515 guifg=#080808
|
||||
elseif g:colors_name ==# 'nord'
|
||||
|
@ -185,7 +185,8 @@ function! SpaceVim#layers#telescope#config() abort
|
||||
" https://github.com/nvim-telescope/telescope.nvim/issues/161
|
||||
autocmd FileType TelescopePrompt call deoplete#custom#buffer_option('auto_complete', v:false)
|
||||
endif
|
||||
autocmd FileType TelescopePrompt iunmap <buffer> jk
|
||||
" @fixme 无法移除 jk 映射
|
||||
" autocmd FileType TelescopePrompt iunmap <buffer> jk
|
||||
augroup END
|
||||
endfunction
|
||||
|
||||
|
@ -1,89 +1,108 @@
|
||||
--=============================================================================
|
||||
-- record-key.lua --- record key for nvim
|
||||
-- Copyright (c) 2016-2022 Wang Shidong & Contributors
|
||||
-- Author: Wang Shidong < wsdjeg@outlook.com >
|
||||
-- URL: https://spacevim.org
|
||||
-- License: GPLv3
|
||||
--=============================================================================
|
||||
|
||||
local M = {}
|
||||
|
||||
local timeout = 3000
|
||||
|
||||
local max_count = 5
|
||||
|
||||
local keys = {}
|
||||
|
||||
local pos = 0
|
||||
|
||||
local enabled = false
|
||||
local ns_is = vim.api.nvim_create_namespace('record-key')
|
||||
|
||||
local function show_key(key)
|
||||
local save_ei = vim.o.eventignore
|
||||
vim.o.eventignore = 'all'
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { string.format('%8s', key) })
|
||||
|
||||
local winid = vim.api.nvim_open_win(buf, false, {
|
||||
relative = 'editor',
|
||||
width = 8,
|
||||
height = 1,
|
||||
row = vim.o.lines - 10 - pos * 3,
|
||||
col = vim.o.columns - 25,
|
||||
focusable = false,
|
||||
noautocmd = true,
|
||||
border = "single"
|
||||
})
|
||||
vim.fn.setbufvar(buf, '&number', 0)
|
||||
vim.fn.setbufvar(buf, '&relativenumber', 0)
|
||||
vim.fn.setbufvar(buf, '&cursorline', 0)
|
||||
vim.fn.setbufvar(buf, '&bufhidden', 'wipe')
|
||||
vim.api.nvim_win_set_option(winid, 'winhighlight', 'NormalFloat:Normal')
|
||||
vim.fn.timer_start(timeout, function()
|
||||
local ei = vim.o.eventignore
|
||||
vim.o.eventignore = 'all'
|
||||
if vim.api.nvim_win_is_valid(winid) then
|
||||
vim.api.nvim_win_close(winid, true)
|
||||
end
|
||||
vim.o.eventignore = ei
|
||||
end, { ['repeat'] = 1 })
|
||||
vim.o.eventignore = save_ei
|
||||
end
|
||||
|
||||
local function display()
|
||||
pos = 0
|
||||
if #keys > max_count then
|
||||
for i = 1, max_count, 1 do
|
||||
show_key(keys[#keys - i + 1])
|
||||
pos = pos + 1
|
||||
end
|
||||
else
|
||||
for i = 1, #keys, 1 do
|
||||
show_key(keys[#keys - i + 1])
|
||||
pos = pos + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function on_key(key)
|
||||
table.insert(keys, vim.fn.keytrans(key))
|
||||
vim.fn.timer_start(timeout, function()
|
||||
if #keys > 0 then
|
||||
table.remove(keys, 1)
|
||||
end
|
||||
end, { ['repeat'] = 1 })
|
||||
display()
|
||||
end
|
||||
|
||||
function M.toggle()
|
||||
if enabled then
|
||||
vim.on_key(nil, ns_is)
|
||||
enabled = false
|
||||
else
|
||||
vim.on_key(on_key, ns_is)
|
||||
enabled = true
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
--=============================================================================
|
||||
-- record-key.lua --- record key for nvim
|
||||
-- Copyright (c) 2016-2022 Wang Shidong & Contributors
|
||||
-- Author: Wang Shidong < wsdjeg@outlook.com >
|
||||
-- URL: https://spacevim.org
|
||||
-- License: GPLv3
|
||||
--=============================================================================
|
||||
|
||||
local M = {}
|
||||
|
||||
local timeout = 3000
|
||||
|
||||
local max_count = 5
|
||||
|
||||
local keys = {}
|
||||
|
||||
local pos = 0
|
||||
|
||||
local enabled = false
|
||||
local ns_is = vim.api.nvim_create_namespace('record-key')
|
||||
|
||||
local function show_key(key)
|
||||
local save_ei = vim.o.eventignore
|
||||
vim.o.eventignore = 'all'
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { string.format('%8s', key) })
|
||||
|
||||
local w = 8
|
||||
|
||||
if vim.fn.strdisplaywidth(key) > 8 then
|
||||
w = vim.fn.strdisplaywidth(key) + 2
|
||||
end
|
||||
|
||||
local winid = vim.api.nvim_open_win(buf, false, {
|
||||
relative = 'editor',
|
||||
width = w,
|
||||
height = 1,
|
||||
row = vim.o.lines - w - 2 - pos * 3,
|
||||
col = vim.o.columns - 25,
|
||||
focusable = false,
|
||||
noautocmd = true,
|
||||
border = 'single',
|
||||
})
|
||||
vim.fn.setbufvar(buf, '&number', 0)
|
||||
vim.fn.setbufvar(buf, '&relativenumber', 0)
|
||||
vim.fn.setbufvar(buf, '&cursorline', 0)
|
||||
vim.fn.setbufvar(buf, '&bufhidden', 'wipe')
|
||||
vim.api.nvim_win_set_option(winid, 'winhighlight', 'NormalFloat:Normal,FloatBorder:WinSeparator')
|
||||
vim.fn.timer_start(timeout, function()
|
||||
local ei = vim.o.eventignore
|
||||
vim.o.eventignore = 'all'
|
||||
if vim.api.nvim_win_is_valid(winid) then
|
||||
vim.api.nvim_win_close(winid, true)
|
||||
end
|
||||
vim.o.eventignore = ei
|
||||
end, { ['repeat'] = 1 })
|
||||
vim.o.eventignore = save_ei
|
||||
end
|
||||
|
||||
local function display()
|
||||
pos = 0
|
||||
if #keys > max_count then
|
||||
for i = 1, max_count, 1 do
|
||||
show_key(keys[#keys - i + 1])
|
||||
pos = pos + 1
|
||||
end
|
||||
else
|
||||
for i = 1, #keys, 1 do
|
||||
show_key(keys[#keys - i + 1])
|
||||
pos = pos + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function on_key(oldkey, key)
|
||||
if not key then
|
||||
table.insert(keys, vim.fn.keytrans(oldkey))
|
||||
vim.fn.timer_start(timeout, function()
|
||||
if #keys > 0 then
|
||||
table.remove(keys, 1)
|
||||
end
|
||||
end, { ['repeat'] = 1 })
|
||||
display()
|
||||
else
|
||||
if #key == 0 then
|
||||
return
|
||||
end
|
||||
table.insert(keys, vim.fn.keytrans(key))
|
||||
vim.fn.timer_start(timeout, function()
|
||||
if #keys > 0 then
|
||||
table.remove(keys, 1)
|
||||
end
|
||||
end, { ['repeat'] = 1 })
|
||||
display()
|
||||
end
|
||||
end
|
||||
|
||||
function M.toggle()
|
||||
if enabled then
|
||||
vim.on_key(nil, ns_is)
|
||||
enabled = false
|
||||
else
|
||||
vim.on_key(on_key, ns_is)
|
||||
enabled = true
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
Loading…
Reference in New Issue
Block a user