Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 22 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
# dial.nvim

**NOTICE: This plugin is work-in-progress yet. User interface is subject to change without notice.**

## FOR USERS OF THE PREVIOUS VERSION (v0.2.0)

This plugin was released v0.3.0 on 2022/02/20 and is no longer compatible with the old interface.
If you have configured the settings for previous versions, please refer to [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) and reconfigure them.

## Abstract

Extended increment/decrement plugin for [Neovim](https://github.com/neovim/neovim). Written in Lua.
Expand All @@ -17,6 +10,7 @@ Extended increment/decrement plugin for [Neovim](https://github.com/neovim/neovi

* Increment/decrement based on various type of rules
* n-ary (`2 <= n <= 36`) integers
* decimal Fractions
* date and time
* constants (an ordered set of specific strings, such as a keyword or operator)
* `true` ⇄ `false`
Expand Down Expand Up @@ -73,16 +67,16 @@ end)
vim.keymap.set("n", "g<C-x>", function()
require("dial.map").manipulate("decrement", "gnormal")
end)
vim.keymap.set("v", "<C-a>", function()
vim.keymap.set("x", "<C-a>", function()
require("dial.map").manipulate("increment", "visual")
end)
vim.keymap.set("v", "<C-x>", function()
vim.keymap.set("x", "<C-x>", function()
require("dial.map").manipulate("decrement", "visual")
end)
vim.keymap.set("v", "g<C-a>", function()
vim.keymap.set("x", "g<C-a>", function()
require("dial.map").manipulate("increment", "gvisual")
end)
vim.keymap.set("v", "g<C-x>", function()
vim.keymap.set("x", "g<C-x>", function()
require("dial.map").manipulate("decrement", "gvisual")
end)
```
Expand Down Expand Up @@ -131,28 +125,22 @@ nmap <Leader>a "=mygroup<CR><Plug>(dial-increment)
Alternatively, you can set the same mapping without expression register:

```lua
vim.keymap.set("n", "<Leader>a", require("dial.map").inc_normal("mygroup"), {noremap = true})
vim.keymap.set("n", "<Leader>a", require("dial.map").inc_normal("mygroup"))
```

When you don't specify any group name in the way described above, the addends in the `default` group is used instead.

### Example Configuration

```vim
lua << EOF
```lua
local augend = require("dial.augend")
require("dial.config").augends:register_group{
default = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
},
typescript = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.constant.new{ elements = {"let", "const"} },
},
visual = {
only_in_visual = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
Expand All @@ -161,14 +149,21 @@ require("dial.config").augends:register_group{
},
}

-- change augends in VISUAL mode
vim.keymap.set("v", "<C-a>", require("dial.map").inc_visual("visual"), {noremap = true})
vim.keymap.set("v", "<C-x>", require("dial.map").dec_visual("visual"), {noremap = true})
EOF
-- Use `only_in_visual` group only in VISUAL <C-a> / <C-x>
vim.keymap.set("x", "<C-a>", function()
require("dial.map").manipulate("increment", "visual", "only_in_visual")
end)
vim.keymap.set("x", "<C-x>", function()
require("dial.map").manipulate("decrement", "visual", "only_in_visual")
end)

" enable only for specific FileType
autocmd FileType typescript lua vim.api.nvim_buf_set_keymap(0, "n", "<C-a>", require("dial.map").inc_normal("typescript"), {noremap = true})
autocmd FileType typescript lua vim.api.nvim_buf_set_keymap(0, "n", "<C-x>", require("dial.map").dec_normal("typescript"), {noremap = true})
require("dial.config").augends:on_filetype {
typescript = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.constant.new{ elements = {"let", "const"} },
},
}
```

## List of Augends
Expand Down
65 changes: 30 additions & 35 deletions README_ja.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
# dial.nvim

**NOTICE: 本プラグインはまだ開発段階であり、事前告知なくインターフェースが変更となることがあります。**

## 旧バージョン (v0.2.0) を使っていた人へ

2022/02/20 に v0.3.0 がリリースされ、既存のインターフェースとの互換性がなくなりました。
以前のバージョン向けの設定を行っていた方は、[TROUBLESHOOTING.md](./TROUBLESHOOTING_ja.md) を参考に再設定を行ってください。

## 概要

[Neovim](https://github.com/neovim/neovim) の数値増減機能を拡張する Lua 製プラグイン。
Expand All @@ -18,6 +11,7 @@

* 数値をはじめとする様々なものの増減
* n 進数 (`2 <= n <= 36`) の整数
* 小数
* 日付・時刻
* キーワードや演算子など、所定文字列のトグル
* `true` ⇄ `false`
Expand Down Expand Up @@ -50,14 +44,14 @@
本プラグインを有効にするには、いずれかのキーに以下のような割り当てを行う必要があります。

```vim
nmap <C-a> <Plug>(dial-increment)
nmap <C-x> <Plug>(dial-decrement)
nmap g<C-a> g<Plug>(dial-increment)
nmap g<C-x> g<Plug>(dial-decrement)
vmap <C-a> <Plug>(dial-increment)
vmap <C-x> <Plug>(dial-decrement)
vmap g<C-a> g<Plug>(dial-increment)
vmap g<C-x> g<Plug>(dial-decrement)
nnoremap <C-a> <Plug>(dial-increment)
nnoremap <C-x> <Plug>(dial-decrement)
nnoremap g<C-a> <Plug>(dial-g-increment)
nnoremap g<C-x> <Plug>(dial-g-decrement)
xnoremap <C-a> <Plug>(dial-increment)
xnoremap <C-x> <Plug>(dial-decrement)
xnoremap g<C-a> <Plug>(dial-g-increment)
xnoremap g<C-x> <Plug>(dial-g-decrement)
```

または Lua 上で以下のように設定することもできます。
Expand All @@ -75,16 +69,16 @@ end)
vim.keymap.set("n", "g<C-x>", function()
require("dial.map").manipulate("decrement", "gnormal")
end)
vim.keymap.set("v", "<C-a>", function()
vim.keymap.set("x", "<C-a>", function()
require("dial.map").manipulate("increment", "visual")
end)
vim.keymap.set("v", "<C-x>", function()
vim.keymap.set("x", "<C-x>", function()
require("dial.map").manipulate("decrement", "visual")
end)
vim.keymap.set("v", "g<C-a>", function()
vim.keymap.set("x", "g<C-a>", function()
require("dial.map").manipulate("increment", "gvisual")
end)
vim.keymap.set("v", "g<C-x>", function()
vim.keymap.set("x", "g<C-x>", function()
require("dial.map").manipulate("decrement", "gvisual")
end)
```
Expand Down Expand Up @@ -132,28 +126,22 @@ nmap <Leader>a "=mygroup<CR><Plug>(dial-increment)
また、 Lua 上で以下のように記述すれば expression register を使わずにマッピングを設定できます。

```lua
vim.keymap.set("n", "<Leader>a", require("dial.map").inc_normal("mygroup"), {noremap = true})
vim.keymap.set("n", "<Leader>a", require("dial.map").inc_normal("mygroup"))
```

expression register などでグループ名を指定しなかった場合、`default` グループにある被加数がかわりに用いられます。

### 設定例

```vim
lua << EOF
```lua
local augend = require("dial.augend")
require("dial.config").augends:register_group{
default = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
},
typescript = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.constant.new{ elements = {"let", "const"} },
},
visual = {
only_in_visual = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
Expand All @@ -162,14 +150,21 @@ require("dial.config").augends:register_group{
},
}

-- VISUAL モードでの被加数を変更する
vim.keymap.set("v", "<C-a>", require("dial.map").inc_visual("visual"), {noremap = true})
vim.keymap.set("v", "<C-x>", require("dial.map").dec_visual("visual"), {noremap = true})
EOF
-- Use `only_in_visual` group only in VISUAL <C-a> / <C-x>
vim.keymap.set("x", "<C-a>", function()
require("dial.map").manipulate("increment", "visual", "only_in_visual")
end)
vim.keymap.set("x", "<C-x>", function()
require("dial.map").manipulate("decrement", "visual", "only_in_visual")
end)

" 特定のファイルタイプでのみ有効にする
autocmd FileType typescript lua vim.api.nvim_buf_set_keymap(0, "n", "<C-a>", require("dial.map").inc_normal("typescript"), {noremap = true})
autocmd FileType typescript lua vim.api.nvim_buf_set_keymap(0, "n", "<C-x>", require("dial.map").dec_normal("typescript"), {noremap = true})
require("dial.config").augends:on_filetype {
typescript = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.constant.new{ elements = {"let", "const"} },
},
}
```

## 被加数の種類と一覧
Expand Down