From 4681e861efcdf9b0b73e3803e70712bc55162863 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 8 Aug 2026 10:38:18 +0900 Subject: feat(slides): improve slide controller --- .../reparojson-fix-only-json-formatter/index.html | 107 +++++++++++---------- 1 file changed, 56 insertions(+), 51 deletions(-) (limited to 'services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html') diff --git a/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html b/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html index 4afef2e5..42bbb29b 100644 --- a/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html +++ b/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html @@ -15,7 +15,7 @@ reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop - +
@@ -106,17 +106,18 @@ 次のように動作する。

-
$ echo '[ 1 2 ]' | reparojson -
[ 1, 2 ] -
-
$ echo '[ 1, 2, ]' | reparojson -
[ 1, 2 ] -
-
$ echo '{ "foo": 1 "bar": 2 }' | reparojson -
{ "foo": 1, "bar": 2 } -
-
$ echo '{ "foo": 1, "bar": 2, }' | reparojson -
{ "foo": 1, "bar": 2 }
+
$ echo '[ 1 2 ]' | reparojson
+[ 1, 2 ]
+
+$ echo '[ 1, 2, ]' | reparojson
+[ 1, 2 ]
+
+$ echo '{ "foo": 1 "bar": 2 }' | reparojson
+{ "foo": 1, "bar": 2 }
+
+$ echo '{ "foo": 1, "bar": 2, }' | reparojson
+{ "foo": 1, "bar": 2 }
+

バージョン 0.1.1 時点で修正対象の文法エラーは次のとおり: @@ -148,33 +149,34 @@ ここでは、 nvim-lspconfigefm-langserver を用いた設定例を紹介する。

-
local lspconfig = require('lspconfig') -
-
lspconfig.efm.setup({ -
init_options = { documentFormatting = true }, -
settings = { -
rootMarkers = {".git/"}, -
languages = { -
json = { -
{ -
formatCommand = "reparojson -q", -
formatStdin = true, -
}, -
}, -
}, -
} -
}) -
-
vim.api.nvim_create_autocmd('LspAttach', { -
callback = function(e) -
vim.api.nvim_create_autocmd('BufWritePre', { -
buffer = e.buf, -
callback = function() -
vim.lsp.buf.format({ async = false }) -
end -
}) -
end, -
})
+
   local lspconfig = require('lspconfig')
+
+   lspconfig.efm.setup({
+      init_options = { documentFormatting = true },
+      settings = {
+         rootMarkers = {".git/"},
+         languages = {
+            json = {
+               {
+                  formatCommand = "reparojson -q",
+                  formatStdin = true,
+               },
+            },
+         },
+      }
+   })
+
+   vim.api.nvim_create_autocmd('LspAttach', {
+      callback = function(e)
+         vim.api.nvim_create_autocmd('BufWritePre', {
+            buffer = e.buf,
+            callback = function()
+               vim.lsp.buf.format({ async = false })
+            end
+         })
+      end,
+   })
+

ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、formatCommand-q フラグを指定していることに注意してほしい。このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。そのため、-q フラグを指定して、修正されたときも exit code 0 で終了するようにしている。 @@ -186,28 +188,31 @@ このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、

-
{ -
"a": true, -
"b": false -
}
+
   {
+      "a": true,
+      "b": false
+   }
+

2行目と3行目を入れ換えて以下のように編集した。

-
{ -
"b": false -
"a": true, -
}
+
   {
+      "b": false
+      "a": true,
+   }
+

これは不正な JSON だが、このツールを通せば次のようになる。

-
{ -
"b": false, -
"a": true -
}
+
   {
+      "b": false,
+      "a": true
+   }
+

もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。しかし、単なる行の入れ換えであれば ddp の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。 -- cgit v1.3.1