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
69 changes: 31 additions & 38 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 All @@ -39,7 +33,7 @@ Extended increment/decrement plugin for [Neovim](https://github.com/neovim/neovi

## Installation

`dial.nvim` requires Neovim `>=0.5.0` (`>=0.6.1` is recommended).
`dial.nvim` requires Neovim `>=0.11.0`.
You can install `dial.nvim` by following the instructions of your favorite package manager.

## Usage
Expand All @@ -48,18 +42,16 @@ This plugin does not provide or override any default key-mappings.
To use this plugin, you need to assign the plugin key-mapping to the key you like, as shown below:

```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)
```

Note: When you use "g<Plug>(dial-increment)" or "g<Plug>(dial-decrement)" on the right side, `remap` option must be enabled.

Or you can configure it with Lua as follows:

```lua
Expand All @@ -75,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 @@ -133,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 @@ -163,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
70 changes: 31 additions & 39 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 All @@ -41,8 +35,7 @@

## インストール

本プラグインには Neovim 0.5.0 以上が必要です(Neovim 0.6.1 以降を推奨)。

本プラグインには Neovim 0.11.0 以上が必要です。
好きなパッケージマネージャの指示に従うことでインストールできます。

## 使用方法
Expand All @@ -51,18 +44,16 @@
本プラグインを有効にするには、いずれかのキーに以下のような割り当てを行う必要があります。

```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)
```

注意: `g<Plug>(dial-increment)` や `g<Plug>(dial-decrement)` を右辺で用いる場合は remap を有効にする必要があります。

または Lua 上で以下のように設定することもできます。

```lua
Expand All @@ -78,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 @@ -135,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 @@ -165,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
32 changes: 16 additions & 16 deletions doc/dial.jax
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Interface |dial-interface|
==============================================================================
REQUIREMENTS *dial-requirements*

* Neovim 0.6.1 or later(0.5.0 以降なら動くと考えられますが保証はしません)
* Neovim 0.11.0 or later

==============================================================================
INTRODUCTION *dial-introduction*
Expand Down Expand Up @@ -95,14 +95,14 @@ USAGE *dial-usage*
|dial.nvim|自身はキーマップの設定および上書きを行わないため、プラグインを動作
させるために以下の設定を追加する必要があります。
>
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 Down Expand Up @@ -1381,13 +1381,13 @@ ADDITIVE DOT REPEATING *dial-additive-dot-repeating*
Vim の便利な機能の1つに、VISUAL モードにおける g<C-a> があります
(|v_g_CTRL-A| 参照)。これは加数を行ごとに1ずつ増やすことができる機能であり、
番号付きの箇条書きなどを生成する際に重宝します。もちろん |dial.nvim| でも同等
の機能を備えています (|v_g<Plug>(dial-increment)|)。この機能は便利ながら、増加
の機能を備えています (|v_<Plug>(dial-g-increment)|)。この機能は便利ながら、増加
対象が離れた場所にあると使いづらいという制限がありました。
これを解決するため、|dial.nvim| ではノーマルモードの g<C-a> に相当する機能を提
供しています。これを有効にするには、以下の設定を書いておく必要があります:
>
nmap g<C-a> g<Plug>(dial-increment)
nmap g<C-x> g<Plug>(dial-decrement)
nmap g<C-a> <Plug>(dial-g-increment)
nmap g<C-x> <Plug>(dial-g-decrement)
<
もしくは Lua 上で以下のように設定することもできます。
>
Expand Down Expand Up @@ -1475,7 +1475,7 @@ MAPPING *dial-mapping*
{VISUAL}["x]<Plug>(dial-decrement) *v_<Plug>(dial-decrement)*
VISUAL モードにおける CTRL-X に相当する機能を提供します。

{VISUAL}["x]g<Plug>(dial-increment) *v_g<Plug>(dial-increment)*
{VISUAL}["x]<Plug>(dial-g-increment) *v_<Plug>(dial-g-increment)*
VISUAL モードにおける |v_g_CTRL-A| に相当する機能を提供します。

使用方法は|v_<Plug>(dial-increment)| と似ているものの、上から数えてn行目に
Expand All @@ -1497,14 +1497,14 @@ MAPPING *dial-mapping*
<
のように、1週間ごとの日付が得られます(日付の被加数が有効のときに限る)。

{VISUAL}["x]g<Plug>(dial-decrement) *v_g<Plug>(dial-decrement)*
{VISUAL}["x]<Plug>(dial-g-decrement) *v_<Plug>(dial-g-decrement)*
VISUAL モードにおける |v_g_CTRL-X| に相当する機能を提供します。

["x]g<Plug>(dial-increment) *g<Plug>(dial-increment)*
["x]<Plug>(dial-g-increment) *<Plug>(dial-g-increment)*
基本的に |<Plug>(dial-increment)| と同じですが、ドットリピートを実行したと
きの挙動が異なります。 |dial-additive-dot-repeating| 参照。

["x]g<Plug>(dial-decrement) *g<Plug>(dial-decrement)*
["x]<Plug>(dial-g-decrement) *<Plug>(dial-g-decrement)*
基本的に |<Plug>(dial-decrement)| と同じですが、ドットリピートを実行したと
きの挙動が異なります。 |dial-additive-dot-repeating| 参照。

Expand Down
Loading