monaqa/dial.nvim

Dot doesn't repeat operation on targets

Closed this issue · 6 comments

Repeat is not working on targets. If I press <C-a> or <C-x> after setting the mappings with:

vim.api.nvim_set_keymap("n", "<C-a>", "<Plug>(dial-increment)", {noremap = false, silent = true})
vim.api.nvim_set_keymap("n", "<C-x>", "<Plug>(dial-decrement)", {noremap = false, silent = true})
vim.api.nvim_set_keymap("v", "<C-a>", "<Plug>(dial-increment)", {noremap = false, silent = true})
vim.api.nvim_set_keymap("v", "<C-x>", "<Plug>(dial-decrement)", {noremap = false, silent = true})
vim.api.nvim_set_keymap("v", "g<C-a>", "<Plug>(dial-increment-additional)", {noremap = false, silent = true})
vim.api.nvim_set_keymap("v", "g<C-x>", "<Plug>(dial-decrement-additional)", {noremap = false, silent = true})

then the dot (repeat) operation doesn't work on targets.

You are right. Unfortunately, dot repeating is not supported yet in this plugin.
I'm hoping to support it someday, but to be honest, I have no idea how to implement the feature.

No worries. Would you mind leaving this open? I might have time to take a look at in a few weeks if someone else doesn't submit a PR.

gitsigns implements it somehow.

you can integrate with tpope/vim-repeat. something like

    if addend < 0 then
        vim.cmd([[silent! call repeat#set("\<Plug>(dial-decrement)", v:count)]])
    else
        vim.cmd([[silent! call repeat#set("\<Plug>(dial-increment)", v:count)]])
    end

using the repeat on semver fees a bit werid. I'm updating a dependency, and as expected If I update a major it will reset everything else to 0, then if I move the cursos to the minor, and press . for the repeat, it will jump back to the major and increment that target instead of the minor. If I do C-a again thin the dot repeat works.
I would think most people would want to move through the semver components and increment each to the new target version, if they are updating a dependency. do you think I should open a bug for this?

It is not a bug. After increasing the semver major version with the first <C-a>, the next dot repeat becomes a specific operator that can increase only the "semver major version".
Due to the behavior, you can increment the major version of a semver in another location without worrying about the cursor position.
As you say, press <C-a> again if you want to increment minor version. Please refer to :h dial-dot-repeating.

There are currently no plans to change this specification or make it changeable, but if you don't like it, please create an issue as a feature request.