From 13b159c6dd499b5c67a110e02780d9e741f0ecdb Mon Sep 17 00:00:00 2001
From: nsfisis
- Vim で JSON を編集しているときに、文法エラー (末尾カンマやカンマの不足) のみを修正して一切の整形をおこなわないプラグインが欲しかった。 整形も同時におこなうプラグインは見つかっただけでも多数あったのだが、整形しないものは見つけられなかったので自作することにした。
+ Vim で JSON を編集しているときに、文法エラー (末尾カンマやカンマの不足) のみを修正して一切の整形をおこなわないプラグインが欲しかった。整形も同時におこなうプラグインは見つかっただけでも多数あったのだが、整形しないものは見つけられなかったので自作することにした。
- なお、作成したツール自体は単体の CLI として動作し、Vim とは無関係に使うことができる。 この記事では Neovim と組み合わせる場合の設定を紹介するが、およそ任意のエディタで使えるだろう。
+ なお、作成したツール自体は単体の CLI として動作し、Vim とは無関係に使うことができる。この記事では Neovim と組み合わせる場合の設定を紹介するが、およそ任意のエディタで使えるだろう。
欲しかったもの
- 次のように動作する。 + 次のように動作する。
$ echo '[ 1 2 ]' | reparojson
@@ -126,18 +126,18 @@ $ echo '{ "foo": 1, "bar": 2, }' | reparojson
- 他にも自動で直せそうなエラーはいくつか思いつくが (オブジェクトのキーがクォートされていない等)、私自身があまり困っていないので優先度は低い。
+ 他にも自動で直せそうなエラーはいくつか思いつくが (オブジェクトのキーがクォートされていない等)、私自身があまり困っていないので優先度は低い。
Neovim との連携
- Neovim で JSON ファイルを保存したときに、上記のツールを自動で走らせるように設定する。
+ Neovim で JSON ファイルを保存したときに、上記のツールを自動で走らせるように設定する。
- ここでは、nvim-lspconfig と efm-langserver を用いた設定例を紹介する。
+ ここでは、nvim-lspconfig と efm-langserver を用いた設定例を紹介する。
local lspconfig = require('lspconfig')
@@ -169,14 +169,14 @@ vim.api.nvim_create_autocmd('LspAttach'
- ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、formatCommand で -q フラグを指定していることに注意してほしい。 このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。 これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。 そのため、-q フラグを指定して、修正されたときも exit code 0 で終了するようにしている。
+ ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、formatCommand で -q フラグを指定していることに注意してほしい。このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。そのため、-q フラグを指定して、修正されたときも exit code 0 で終了するようにしている。
おわりに
- このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、
+ このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、
{
@@ -185,7 +185,7 @@ vim.api.nvim_create_autocmd('LspAttach'}
- 2行目と3行目を入れ換えて以下のように編集した。
+ 2行目と3行目を入れ換えて以下のように編集した。
{
@@ -194,7 +194,7 @@ vim.api.nvim_create_autocmd('LspAttach'}
- これは不正な JSON だが、このツールを通せば次のようになる。
+ これは不正な JSON だが、このツールを通せば次のようになる。
{
@@ -203,7 +203,7 @@ vim.api.nvim_create_autocmd('LspAttach'}
- もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。 しかし、単なる行の入れ換えであれば ddp の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。 このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。
+ もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。しかし、単なる行の入れ換えであれば ddp の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。
--
cgit v1.2.3-70-g09d2