aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/content/posts/2024-01-10
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-11-27 05:05:04 +0900
committernsfisis <nsfisis@gmail.com>2025-11-27 06:07:46 +0900
commitc754d24b162ecd504f3c4bdd8632045dd0398768 (patch)
tree362323710bb329ad609d379df4e4a429e4229fd2 /services/nuldoc/content/posts/2024-01-10
parentd1014de68415df8f0a5dc3389332e086119c6198 (diff)
downloadnsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.tar.gz
nsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.tar.zst
nsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.zip
feat(nuldoc): Djot to Markdown
Diffstat (limited to 'services/nuldoc/content/posts/2024-01-10')
-rw-r--r--services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.md (renamed from services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.dj)20
1 files changed, 7 insertions, 13 deletions
diff --git a/services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.dj b/services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.md
index 483b0b9..5abef80 100644
--- a/services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.dj
+++ b/services/nuldoc/content/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file.md
@@ -12,12 +12,11 @@ tags = [
date = "2024-01-10"
remark = "公開"
---
-::: note
+:::note
この記事は [Vim 駅伝](https://vim-jp.org/ekiden/) #136 の記事です。
:::
-{#intro}
-# やりたいこと
+# やりたいこと {#intro}
Neovim で空の PHP ファイルを開いたとき、そのファイルが置かれているディレクトリの構造に基づいて、自動的に `namespace` 宣言を挿入したい。具体的には、トップレベルの名前空間が `MyNamespace` であり、ファイル `src/Foo/Bar/Baz.php` を開いたときに、そのファイルが空であるなら、次のようなテンプレートが自動的に挿入されてほしい。
@@ -27,8 +26,7 @@ Neovim で空の PHP ファイルを開いたとき、そのファイルが置
namespace MyNamespace\Foo\Bar;
```
-{#version}
-# バージョン情報
+# バージョン情報 {#version}
```
$ nvim --version
@@ -40,8 +38,7 @@ LuaJIT 2.1.1693350652
今回は Lua で処理を記述したため、Vim では動作しない。以下の説明でも Neovim に絞って述べる。
また、パス区切りがスラッシュである前提で記述したため、Windows には対応していない。
-{#ftplugin}
-# ftplugin を用意する
+# ftplugin を用意する {#ftplugin}
Neovim には特定のファイルタイプに対して特別な処理をおこなうための ftplugin と呼ばれる仕組みがある。
Neovim の設定を置くディレクトリ (例えば `~/.config/nvim`) の配下に `ftplugin/&lt;FILE_TYPE&gt;.vim` または `ftplugin/&lt;FILE_TYPE&gt;.lua` というファイルを配置すると、その `&lt;FILE_TYPE&gt;` が読み込まれたときにそのファイルが自動的に実行される。
@@ -51,8 +48,7 @@ Neovim の設定を置くディレクトリ (例えば `~/.config/nvim`) の配
この記事では Lua で処理を記述するため、拡張子には `.lua` を用いる。
これ以降載せるコードは、すべて `after/ftplugin/php.lua` の中に記述している。
-{#did-ftplugin}
-# 二重読み込みを防ぐ
+# 二重読み込みを防ぐ {#did-ftplugin}
ファイルタイプは読み込んだあとに変更されることもあるので、ftplugin は複数回実行されうる。
二重読み込みを防ぐために、`did_ftplugin_&lt;FILE_TYPE&gt;_after` というバッファローカル変数を定義しておくのが慣習となっている。
@@ -67,8 +63,7 @@ end
vim.b.did_ftplugin_php_after = true
```
-{#implement}
-# 実装する
+# 実装する {#implement}
では実装していこう。今回私は次のようなロジックとした。以降、「今 Neovim で開いた PHP ファイル」のことを「対象ファイル」と呼ぶことにする。
@@ -197,8 +192,7 @@ end
vim.b.did_ftplugin_php_after = true
```
-{#outro}
-# おわりに
+# おわりに {#outro}
簡易的な実装だが、多くのケースではうまく動いているようだ。
最大の問題は PSR 4 に準拠しないフレームワークを用いているとまったく役に立たないことで、今まさに職場で困っている。