aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/public/blog/posts/2024-04-29
diff options
context:
space:
mode:
Diffstat (limited to 'services/nuldoc/public/blog/posts/2024-04-29')
-rw-r--r--services/nuldoc/public/blog/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html23
1 files changed, 10 insertions, 13 deletions
diff --git a/services/nuldoc/public/blog/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html b/services/nuldoc/public/blog/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
index 065a11da..118c0d58 100644
--- a/services/nuldoc/public/blog/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
+++ b/services/nuldoc/public/blog/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Zsh】 Composer のカスタムコマンドに対する Zsh 補完で引数にファイルを補完させる|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=81dfc0b483beda175e3e17562faac7c9">
+ <link rel="stylesheet" href="/style.css?h=c3724e2d900f13528c82005e79a8ec23">
</head>
<body class="single">
<header class="header">
@@ -116,12 +116,11 @@
このことは、先ほどリンクを載せた <code>_composer</code> 関数を定義しているファイルの冒頭にも書かれている。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781"># - @todo We don't complete custom commands (including script aliases). This is</span>
-<span style="color: #6e7781"># easy to do in the general case, but it probably requires some clever caching</span>
-<span style="color: #6e7781"># to avoid introducing a noticeable lag to every completion operation, due to</span>
-<span style="color: #6e7781"># the way command resolution works and the fact that discovering custom</span>
-<span style="color: #6e7781"># commands requires making slow calls to Composer</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781"># - @todo We don't complete custom commands (including script aliases). This is</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"># easy to do in the general case, but it probably requires some clever caching</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"># to avoid introducing a noticeable lag to every completion operation, due to</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"># the way command resolution works and the fact that discovering custom</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"># commands requires making slow calls to Composer</span></div></code></pre>
</div>
</section>
<section id="section--what-i-want-to-achive">
@@ -139,8 +138,7 @@
まずは、Zsh で補完関数を提供する場合のボイラープレートコードを書く。以下は <code>~/.zshrc</code> にすべて書く前提だが、<code>autoload</code> を設定するなどすれば別ファイルに分離できる (詳細な手順は割愛)。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code>compdef _my_composer composer composer.phar
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line">compdef _my_composer composer composer.phar</div></code></pre>
</div>
<p>
<code>compdef</code> は Zsh が用意している関数で、第一引数に補完関数の名前、第二引数以降に補完を適用するコマンド名を並べる。この場合は、<code>composer</code> コマンドや <code>composer.phar</code> コマンドに対して <code>_my_composer</code> を使って補完をおこなうよう定義している。
@@ -149,10 +147,9 @@
次に <code>_my_composer</code> を定義する。基本的にはデフォルトの <code>composer</code> コマンドの補完関数 (つまり <code>_composer</code> 関数) を使い、それが何も返さなかった場合に限り、Zsh のファイル・ディレクトリ補完へフォールバックする。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #cf222e">function </span>_my_composer<span style="color: #0550ae">()</span> <span style="color: #0550ae">{</span>
- _composer <span style="color: #0a3069">"</span><span style="color: #0550ae">$@</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">||</span> _files <span style="color: #0a3069">"</span><span style="color: #0550ae">$@</span><span style="color: #0a3069">"</span>
-<span style="color: #0550ae">}</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #cf222e">function </span>_my_composer<span style="color: #0550ae">()</span> <span style="color: #0550ae">{</span>
+</div><div class="codeblock-line"> _composer <span style="color: #0a3069">"</span><span style="color: #0550ae">$@</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">||</span> _files <span style="color: #0a3069">"</span><span style="color: #0550ae">$@</span><span style="color: #0a3069">"</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">}</span></div></code></pre>
</div>
<p>
<code>_composer</code> コマンドは何も補完候補がなかったとき非ゼロな exit status で終了するので、そうであったなら <code>_files</code> を呼び出す。<code>_files</code> は、Zsh がデフォルトで用意しているファイル・ディレクトリの補完をおこなう関数である。