diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-11-27 05:05:04 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-11-27 06:07:46 +0900 |
| commit | c754d24b162ecd504f3c4bdd8632045dd0398768 (patch) | |
| tree | 362323710bb329ad609d379df4e4a429e4229fd2 /services/nuldoc/content/posts/2024-01-10 | |
| parent | d1014de68415df8f0a5dc3389332e086119c6198 (diff) | |
| download | nsfisis.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/<FILE_TYPE>.vim` または `ftplugin/<FILE_TYPE>.lua` というファイルを配置すると、その `<FILE_TYPE>` が読み込まれたときにそのファイルが自動的に実行される。 @@ -51,8 +48,7 @@ Neovim の設定を置くディレクトリ (例えば `~/.config/nvim`) の配 この記事では Lua で処理を記述するため、拡張子には `.lua` を用いる。 これ以降載せるコードは、すべて `after/ftplugin/php.lua` の中に記述している。 -{#did-ftplugin} -# 二重読み込みを防ぐ +# 二重読み込みを防ぐ {#did-ftplugin} ファイルタイプは読み込んだあとに変更されることもあるので、ftplugin は複数回実行されうる。 二重読み込みを防ぐために、`did_ftplugin_<FILE_TYPE>_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 に準拠しないフレームワークを用いているとまったく役に立たないことで、今まさに職場で困っている。 |
