summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-19 11:02:24 +0900
committernsfisis <nsfisis@gmail.com>2024-07-19 11:02:24 +0900
commitfdd26f20fc8777aa56681f0b360b8f8c494524e4 (patch)
tree1dc4192c3725443bd5019eb8f3cb5852c064106e
parent2e95d7ae532df155e7d4b2bf183b078375684bd6 (diff)
downloadnsfisis.dev-fdd26f20fc8777aa56681f0b360b8f8c494524e4.tar.gz
nsfisis.dev-fdd26f20fc8777aa56681f0b360b8f8c494524e4.tar.zst
nsfisis.dev-fdd26f20fc8777aa56681f0b360b8f8c494524e4.zip
feat(blog/content): /posts/2024-07-19/reparojson-fix-only-json-formatter/
-rw-r--r--vhosts/blog/content/posts/2024-07-19/reparojson-fix-only-json-formatter.ndoc153
-rw-r--r--vhosts/blog/public/atom.xml10
-rw-r--r--vhosts/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html216
-rw-r--r--vhosts/blog/public/posts/atom.xml10
-rw-r--r--vhosts/blog/public/posts/index.html15
-rw-r--r--vhosts/blog/public/tags/index.html4
-rw-r--r--vhosts/blog/public/tags/neovim/atom.xml10
-rw-r--r--vhosts/blog/public/tags/neovim/index.html15
-rw-r--r--vhosts/blog/public/tags/vim/atom.xml10
-rw-r--r--vhosts/blog/public/tags/vim/index.html15
10 files changed, 452 insertions, 6 deletions
diff --git a/vhosts/blog/content/posts/2024-07-19/reparojson-fix-only-json-formatter.ndoc b/vhosts/blog/content/posts/2024-07-19/reparojson-fix-only-json-formatter.ndoc
new file mode 100644
index 00000000..5efe8bbd
--- /dev/null
+++ b/vhosts/blog/content/posts/2024-07-19/reparojson-fix-only-json-formatter.ndoc
@@ -0,0 +1,153 @@
+---
+[article]
+uuid = "222488dd-cf07-4961-83aa-a014b05369ff"
+title = "reparojson: 文法エラーを直すだけの JSON フォーマッタを作った"
+description = "文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。"
+tags = [
+ "neovim",
+ "vim",
+]
+
+[[article.revisions]]
+date = "2024-07-19"
+remark = "公開"
+---
+<article>
+ <note>
+ この記事は <a href="https://vim-jp.org/ekiden/">Vim 駅伝</a> #218 の記事です。
+ </note>
+ <section id="intro">
+ <h>欲しかったもの</h>
+ <p>
+ Vim で JSON を編集しているときに、文法エラー (末尾カンマやカンマの不足) のみを修正して一切の整形をおこなわないプラグインが欲しかった。
+ 整形も同時におこなうプラグインは見つかっただけでも多数あったのだが、整形しないものは見つけられなかったので自作することにした。
+ </p>
+ <p>
+ なお、作成したツール自体は単体の CLI として動作し、Vim とは無関係に使うことができる。
+ この記事では Neovim と組み合わせる場合の設定を紹介するが、およそ任意のエディタで使えるだろう。
+ </p>
+ </section>
+ <section id="reparojson">
+ <h>作ったもの</h>
+ <p>
+ 作成したものがこちら: <a href="https://github.com/nsfisis/reparojson">ReparoJSON</a>
+ </p>
+ <p>
+ 次のように動作する。
+ </p>
+ <codeblock>
+ <![CDATA[
+ $ 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 }
+ ]]>
+ </codeblock>
+ <p>
+ バージョン 0.1.1 時点で修正対象の文法エラーは次のとおり:
+ </p>
+ <ul>
+ <li>配列末尾の余計なカンマ (削除する)</li>
+ <li>配列内のカンマ不足 (挿入する)</li>
+ <li>オブジェクト末尾の余計なカンマ (削除する)</li>
+ <li>オブジェクト内のカンマ不足 (挿入する)</li>
+ </ul>
+ <p>
+ 他にも自動で直せそうなエラーはいくつか思いつくが (オブジェクトのキーがクォートされていない等)、私自身があまり困っていないので優先度は低い。
+ </p>
+ </section>
+ <section id="itegration-with-neovim">
+ <h>Neovim との連携</h>
+ <p>
+ Neovim で JSON ファイルを保存したときに、上記のツールを自動で走らせるように設定する。
+ </p>
+ <p>
+ ここでは、<a href="https://github.com/neovim/nvim-lspconfig">nvim-lspconfig</a> と <a href="https://github.com/mattn/efm-langserver">efm-langserver</a> を用いた設定例を紹介する。
+ </p>
+ <codeblock language="lua">
+ <![CDATA[
+ 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,
+ })
+ ]]>
+ </codeblock>
+ <p>
+ ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、<code>formatCommand</code> で <code>-q</code> フラグを指定していることに注意してほしい。
+ このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。
+ これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。
+ そのため、<code>-q</code> フラグを指定して、修正されたときも exit code 0 で終了するようにしている。
+ </p>
+ </section>
+ <section id="outro">
+ <h>おわりに</h>
+ <p>
+ このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、
+ </p>
+ <codeblock language="json">
+ <![CDATA[
+ {
+ "a": true,
+ "b": false
+ }
+ ]]>
+ </codeblock>
+ <p>
+ 2行目と3行目を入れ換えて以下のように編集した。
+ </p>
+ <codeblock language="json">
+ <![CDATA[
+ {
+ "b": false
+ "a": true,
+ }
+ ]]>
+ </codeblock>
+ <p>
+ これは不正な JSON だが、このツールを通せば次のようになる。
+ </p>
+ <codeblock language="json">
+ <![CDATA[
+ {
+ "b": false,
+ "a": true
+ }
+ ]]>
+ </codeblock>
+ <p>
+ もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。
+ しかし、単なる行の入れ換えであれば <code>ddp</code> の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。
+ このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。
+ </p>
+ </section>
+</article>
diff --git a/vhosts/blog/public/atom.xml b/vhosts/blog/public/atom.xml
index 378388d2..99c568bb 100644
--- a/vhosts/blog/public/atom.xml
+++ b/vhosts/blog/public/atom.xml
@@ -7,7 +7,15 @@
<author>
<name>nsfisis</name>
</author>
- <updated>2024-07-18T00:00:00+09:00</updated>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ <entry>
+ <id>urn:uuid:222488dd-cf07-4961-83aa-a014b05369ff</id>
+ <link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-07-19/reparojson-fix-only-json-formatter/"></link>
+ <title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</title>
+ <summary>文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。</summary>
+ <published>2024-07-19T00:00:00+09:00</published>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ </entry>
<entry>
<id>urn:uuid:eec495b5-45e2-4c6f-a725-e62b1e0a7ad5</id>
<link rel="alternate" href="https://blog.nsfisis.dev/slides/2024-07-18/phpstudy-tokyo-166/"></link>
diff --git a/vhosts/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html b/vhosts/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html
new file mode 100644
index 00000000..8b23b678
--- /dev/null
+++ b/vhosts/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html lang="ja-JP">
+ <head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="author" content="nsfisis">
+ <meta name="copyright" content="&copy; 2024 nsfisis">
+ <meta name="description" content="文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。">
+ <meta name="keywords" content="Neovim,Vim">
+ <meta property="og:type" content="article">
+ <meta property="og:title" content="reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop">
+ <meta property="og:description" content="文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。">
+ <meta property="og:site_name" content="REPL: Rest-Eat-Program Loop">
+ <meta property="og:locale" content="ja_JP">
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg">
+ <title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop</title>
+ <link rel="stylesheet" href="/style.css?h=0656606dcfb3f6fa094a976e05df9007">
+ <link rel="stylesheet" href="/hl.css?h=340e65ffd5c17713efc9107c06304f7b">
+ </head>
+ <body class="single">
+ <header class="header">
+ <div class="site-logo">
+ <a href="/">REPL: Rest-Eat-Program Loop</a>
+ </div>
+ <nav class="nav">
+ <ul>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li>
+ <a href="/posts/">Posts</a>
+ </li>
+ <li>
+ <a href="/slides/">Slides</a>
+ </li>
+ <li>
+ <a href="/tags/">Tags</a>
+ </li>
+ </ul>
+ </nav>
+ </header>
+ <main class="main">
+ <article class="post-single">
+ <header class="post-header">
+ <h1 class="post-title">reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</h1>
+ <ul class="post-tags">
+ <li class="tag">
+ <a href="/tags/neovim/">Neovim</a>
+ </li>
+ <li class="tag">
+ <a href="/tags/vim/">Vim</a>
+ </li>
+ </ul>
+ </header>
+ <div class="post-content">
+ <section>
+ <h2 id="changelog">更新履歴</h2>
+ <ol>
+ <li class="revision">
+ <time datetime="2024-07-19">2024-07-19</time>: 公開
+ </li>
+ </ol>
+ </section>
+ <div class="admonition">
+ <div class="admonition-label">
+ NOTE
+ </div>
+ <div class="admonition-content">
+ この記事は <a href="https://vim-jp.org/ekiden/">Vim 駅伝</a> #218 の記事です。
+ </div>
+ </div>
+
+ <section id="section--intro">
+ <h2><a href="#section--intro">欲しかったもの</a></h2>
+ <p>
+ Vim で JSON を編集しているときに、文法エラー (末尾カンマやカンマの不足) のみを修正して一切の整形をおこなわないプラグインが欲しかった。 整形も同時におこなうプラグインは見つかっただけでも多数あったのだが、整形しないものは見つけられなかったので自作することにした。
+ </p>
+
+ <p>
+ なお、作成したツール自体は単体の CLI として動作し、Vim とは無関係に使うことができる。 この記事では Neovim と組み合わせる場合の設定を紹介するが、およそ任意のエディタで使えるだろう。
+ </p>
+ </section>
+
+ <section id="section--reparojson">
+ <h2><a href="#section--reparojson">作ったもの</a></h2>
+ <p>
+ 作成したものがこちら: <a href="https://github.com/nsfisis/reparojson">ReparoJSON</a>
+ </p>
+
+ <p>
+ 次のように動作する。
+ </p>
+
+ <pre class="highlight"><code>$ echo &apos;[ 1 2 ]&apos; | reparojson
+[ 1, 2 ]
+
+$ echo &apos;[ 1, 2, ]&apos; | reparojson
+[ 1, 2 ]
+
+$ echo &apos;{ &quot;foo&quot;: 1 &quot;bar&quot;: 2 }&apos; | reparojson
+{ &quot;foo&quot;: 1, &quot;bar&quot;: 2 }
+
+$ echo &apos;{ &quot;foo&quot;: 1, &quot;bar&quot;: 2, }&apos; | reparojson
+{ &quot;foo&quot;: 1, &quot;bar&quot;: 2 }</code></pre>
+
+ <p>
+ バージョン 0.1.1 時点で修正対象の文法エラーは次のとおり:
+ </p>
+
+ <ul>
+ <li>
+ 配列末尾の余計なカンマ (削除する)
+ </li>
+
+ <li>
+ 配列内のカンマ不足 (挿入する)
+ </li>
+
+ <li>
+ オブジェクト末尾の余計なカンマ (削除する)
+ </li>
+
+ <li>
+ オブジェクト内のカンマ不足 (挿入する)
+ </li>
+ </ul>
+
+ <p>
+ 他にも自動で直せそうなエラーはいくつか思いつくが (オブジェクトのキーがクォートされていない等)、私自身があまり困っていないので優先度は低い。
+ </p>
+ </section>
+
+ <section id="section--itegration-with-neovim">
+ <h2><a href="#section--itegration-with-neovim">Neovim との連携</a></h2>
+ <p>
+ Neovim で JSON ファイルを保存したときに、上記のツールを自動で走らせるように設定する。
+ </p>
+
+ <p>
+ ここでは、<a href="https://github.com/neovim/nvim-lspconfig">nvim-lspconfig</a> と <a href="https://github.com/mattn/efm-langserver">efm-langserver</a> を用いた設定例を紹介する。
+ </p>
+
+ <pre class="highlight" language="lua"><code class="highlight"><span class="hljs-keyword">local</span> lspconfig = <span class="hljs-built_in">require</span>(<span class="hljs-string">&#x27;lspconfig&#x27;</span>)
+
+lspconfig.efm.setup({
+ init_options = { documentFormatting = <span class="hljs-literal">true</span> },
+ settings = {
+ rootMarkers = {<span class="hljs-string">&quot;.git/&quot;</span>},
+ languages = {
+ json = {
+ {
+ formatCommand = <span class="hljs-string">&quot;reparojson -q&quot;</span>,
+ formatStdin = <span class="hljs-literal">true</span>,
+ },
+ },
+ },
+ }
+})
+
+vim.api.nvim_create_autocmd(<span class="hljs-string">&#x27;LspAttach&#x27;</span>, {
+ callback = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(e)</span></span>
+ vim.api.nvim_create_autocmd(<span class="hljs-string">&#x27;BufWritePre&#x27;</span>, {
+ buffer = e.buf,
+ callback = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span></span>
+ vim.lsp.buf.<span class="hljs-built_in">format</span>({ async = <span class="hljs-literal">false</span> })
+ <span class="hljs-keyword">end</span>
+ })
+ <span class="hljs-keyword">end</span>,
+})</code></pre>
+
+ <p>
+ ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、<code>formatCommand</code> で <code>-q</code> フラグを指定していることに注意してほしい。 このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。 これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。 そのため、<code>-q</code> フラグを指定して、修正されたときも exit code 0 で終了するようにしている。
+ </p>
+ </section>
+
+ <section id="section--outro">
+ <h2><a href="#section--outro">おわりに</a></h2>
+ <p>
+ このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、
+ </p>
+
+ <pre class="highlight" language="json"><code class="highlight"><span class="hljs-punctuation">{</span>
+ <span class="hljs-attr">&quot;a&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
+ <span class="hljs-attr">&quot;b&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span>
+<span class="hljs-punctuation">}</span></code></pre>
+
+ <p>
+ 2行目と3行目を入れ換えて以下のように編集した。
+ </p>
+
+ <pre class="highlight" language="json"><code class="highlight"><span class="hljs-punctuation">{</span>
+ <span class="hljs-attr">&quot;b&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span>
+ <span class="hljs-attr">&quot;a&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
+<span class="hljs-punctuation">}</span></code></pre>
+
+ <p>
+ これは不正な JSON だが、このツールを通せば次のようになる。
+ </p>
+
+ <pre class="highlight" language="json"><code class="highlight"><span class="hljs-punctuation">{</span>
+ <span class="hljs-attr">&quot;b&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>
+ <span class="hljs-attr">&quot;a&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span>
+<span class="hljs-punctuation">}</span></code></pre>
+
+ <p>
+ もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。 しかし、単なる行の入れ換えであれば <code>ddp</code> の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。 このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。
+ </p>
+ </section>
+ </div>
+ </article>
+ </main>
+ <footer class="footer">
+ &copy; 2021 nsfisis
+ </footer>
+ </body>
+</html>
diff --git a/vhosts/blog/public/posts/atom.xml b/vhosts/blog/public/posts/atom.xml
index 6d2f9e51..5c4a94b4 100644
--- a/vhosts/blog/public/posts/atom.xml
+++ b/vhosts/blog/public/posts/atom.xml
@@ -7,7 +7,15 @@
<author>
<name>nsfisis</name>
</author>
- <updated>2024-07-07T00:00:00+09:00</updated>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ <entry>
+ <id>urn:uuid:222488dd-cf07-4961-83aa-a014b05369ff</id>
+ <link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-07-19/reparojson-fix-only-json-formatter/"></link>
+ <title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</title>
+ <summary>文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。</summary>
+ <published>2024-07-19T00:00:00+09:00</published>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ </entry>
<entry>
<id>urn:uuid:8d6f3690-3da3-4235-a81b-b9707cee22ad</id>
<link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-06-19/scalamatsuri-2024-report/"></link>
diff --git a/vhosts/blog/public/posts/index.html b/vhosts/blog/public/posts/index.html
index c2c4005c..4a64804b 100644
--- a/vhosts/blog/public/posts/index.html
+++ b/vhosts/blog/public/posts/index.html
@@ -43,6 +43,21 @@
<h1>投稿一覧</h1>
</header>
<article class="post-entry">
+ <a href="/posts/2024-07-19/reparojson-fix-only-json-formatter/">
+ <header class="entry-header">
+ <h2>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</h2>
+ </header>
+ <section class="entry-content">
+ <p>
+ 文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。
+ </p>
+ </section>
+ <footer class="entry-footer">
+ <time datetime="2024-07-19">2024-07-19</time> 投稿
+ </footer>
+ </a>
+ </article>
+ <article class="post-entry">
<a href="/posts/2024-06-19/scalamatsuri-2024-report/">
<header class="entry-header">
<h2>ScalaMatsuri 2024 参加レポ</h2>
diff --git a/vhosts/blog/public/tags/index.html b/vhosts/blog/public/tags/index.html
index cade2551..6bd48285 100644
--- a/vhosts/blog/public/tags/index.html
+++ b/vhosts/blog/public/tags/index.html
@@ -117,7 +117,7 @@
<h2>Neovim</h2>
</header>
<footer class="entry-footer">
- 1件の記事
+ 2件の記事
</footer>
</a>
</article>
@@ -307,7 +307,7 @@
<h2>Vim</h2>
</header>
<footer class="entry-footer">
- 2件の記事
+ 3件の記事
</footer>
</a>
</article>
diff --git a/vhosts/blog/public/tags/neovim/atom.xml b/vhosts/blog/public/tags/neovim/atom.xml
index a9a1b845..b3539419 100644
--- a/vhosts/blog/public/tags/neovim/atom.xml
+++ b/vhosts/blog/public/tags/neovim/atom.xml
@@ -7,7 +7,15 @@
<author>
<name>nsfisis</name>
</author>
- <updated>2024-01-10T00:00:00+09:00</updated>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ <entry>
+ <id>urn:uuid:222488dd-cf07-4961-83aa-a014b05369ff</id>
+ <link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-07-19/reparojson-fix-only-json-formatter/"></link>
+ <title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</title>
+ <summary>文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。</summary>
+ <published>2024-07-19T00:00:00+09:00</published>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ </entry>
<entry>
<id>urn:uuid:05cb16e1-05bc-4359-bc06-88ac20510740</id>
<link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/"></link>
diff --git a/vhosts/blog/public/tags/neovim/index.html b/vhosts/blog/public/tags/neovim/index.html
index 1acafc27..99af6b9a 100644
--- a/vhosts/blog/public/tags/neovim/index.html
+++ b/vhosts/blog/public/tags/neovim/index.html
@@ -44,6 +44,21 @@
<h1>タグ「Neovim」一覧</h1>
</header>
<article class="post-entry">
+ <a href="/posts/2024-07-19/reparojson-fix-only-json-formatter/">
+ <header class="entry-header">
+ <h2>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</h2>
+ </header>
+ <section class="entry-content">
+ <p>
+ 文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。
+ </p>
+ </section>
+ <footer class="entry-footer">
+ <time datetime="2024-07-19">2024-07-19</time> 投稿
+ </footer>
+ </a>
+ </article>
+ <article class="post-entry">
<a href="/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/">
<header class="entry-header">
<h2>【Neovim】 空の PHP ファイルに namespace 宣言を挿入する</h2>
diff --git a/vhosts/blog/public/tags/vim/atom.xml b/vhosts/blog/public/tags/vim/atom.xml
index d9062978..bb74a2ce 100644
--- a/vhosts/blog/public/tags/vim/atom.xml
+++ b/vhosts/blog/public/tags/vim/atom.xml
@@ -7,7 +7,15 @@
<author>
<name>nsfisis</name>
</author>
- <updated>2021-10-02T00:00:00+09:00</updated>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ <entry>
+ <id>urn:uuid:222488dd-cf07-4961-83aa-a014b05369ff</id>
+ <link rel="alternate" href="https://blog.nsfisis.dev/posts/2024-07-19/reparojson-fix-only-json-formatter/"></link>
+ <title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</title>
+ <summary>文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。</summary>
+ <published>2024-07-19T00:00:00+09:00</published>
+ <updated>2024-07-19T00:00:00+09:00</updated>
+ </entry>
<entry>
<id>urn:uuid:44171f75-c312-4c92-9927-3d260e162175</id>
<link rel="alternate" href="https://blog.nsfisis.dev/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/"></link>
diff --git a/vhosts/blog/public/tags/vim/index.html b/vhosts/blog/public/tags/vim/index.html
index ff3709b1..65a2d414 100644
--- a/vhosts/blog/public/tags/vim/index.html
+++ b/vhosts/blog/public/tags/vim/index.html
@@ -44,6 +44,21 @@
<h1>タグ「Vim」一覧</h1>
</header>
<article class="post-entry">
+ <a href="/posts/2024-07-19/reparojson-fix-only-json-formatter/">
+ <header class="entry-header">
+ <h2>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った</h2>
+ </header>
+ <section class="entry-content">
+ <p>
+ 文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。
+ </p>
+ </section>
+ <footer class="entry-footer">
+ <time datetime="2024-07-19">2024-07-19</time> 投稿
+ </footer>
+ </a>
+ </article>
+ <article class="post-entry">
<a href="/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/">
<header class="entry-header">
<h2>【Vim】 autocmd events の BufWrite/BufWritePre の違い</h2>