Compare commits

...

6 Commits

@ -119,9 +119,15 @@ default DelayTrain mappings are included below:
['nv'] = {'h', 'j', 'k', 'l'},
['nvi'] = {'<Left>', '<Down>', '<Up>', '<Right>'},
},
ignore_filestypes = {}, -- Example: set to {"help", "NvimTr*"} to
-- disable the plugin for help and NvimTree
}
```
You can define a list of filetypes that will be ignored by delaytrain using
`ignore_filestypes`. The option accepts a list of strings or patterns.
Tip: you can find the filetype for the current buffer using the command `:set ft?`
### Mappings
The keys option allows you to delay different keypresses in different modes.

@ -45,6 +45,8 @@ following configuration (default settings included):
['nv'] = {'h', 'j', 'k', 'l'},
['nvi'] = {'<Left>', '<Down>', '<Up>', '<Right>'},
},
ignore_filestypes = {}, -- Example: set to {"help", "NvimTr*"} to
-- disable the plugin for help and NvimTree
}
<
Keep in mind that the `delay_ms` timer starts on the FIRST keypress and not the
@ -61,6 +63,10 @@ the default settings, if you hit j and then hit k after 500ms, both keypresses
will work. If you wait another 200ms and hit j again, the keypress will not
work.
You can define a list of filetypes that will be ignored by delaytrain using
`ignore_filestypes`. The option accepts a list of strings or patterns. Tip:
you can find the filetype for the current buffer using the command `:set ft?`
------------------------------------------------------------------------------
MAPPINGS *delaytrain-mappings*

@ -6,6 +6,7 @@ vim.g.delaytrain_grace_period = 1
-- Map of keys to their individual current grace period
-- This keeps track of how many times a key has been pressed
local current_grace_period_intervals = {}
local ignore_filetypes = {}
local keymaps = {
['nv'] = {'h', 'j', 'k', 'l'},
@ -17,6 +18,20 @@ local is_enabled = false
function M.try_delay_keypress(key)
current_interval = current_grace_period_intervals[key]
-- ignore user defined patterns
for _,ign_ft in ipairs(ignore_filetypes) do
if vim.o.filetype:match(ign_ft) then
M.send_keypress(key)
return
end
end
-- Ingore on macro execution
if vim.fn.reg_executing() ~= "" then
M.send_keypress(key)
return
end
-- Start a timer on the first keypress to reset the interval
if current_interval == 0 then
vim.loop.new_timer():start(vim.g.delaytrain_delay_ms, 0, function()
@ -27,13 +42,16 @@ function M.try_delay_keypress(key)
-- Pass the key through only if we haven't reached the grace period
if current_interval < vim.g.delaytrain_grace_period then
current_grace_period_intervals[key] = current_interval + 1
M.send_keypress(key)
end
end
vim.api.nvim_feedkeys(
function M.send_keypress(key)
vim.api.nvim_feedkeys(
vim.api.nvim_replace_termcodes(key, true, false, true),
'n',
false
)
end
)
end
function M.setup(opts)
@ -46,6 +64,8 @@ function M.setup(opts)
vim.g.delaytrain_grace_period = opts.grace_period
end
ignore_filetypes = opts.ignore_filetypes or {}
if opts.keys then
keymaps = opts.keys
end

Loading…
Cancel
Save