summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/public/posts/2024-04-29
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-03-29 00:47:55 +0900
committernsfisis <nsfisis@gmail.com>2025-03-29 00:55:14 +0900
commitd30dfc89bf1b673b2fdc0638766b930adaec228c (patch)
tree739d8826451947adfeb526ef1adeb1db397a9af4 /vhosts/blog/public/posts/2024-04-29
parentf65ec15aaf8fc46685c39d721cab82f64baead8c (diff)
downloadnsfisis.dev-d30dfc89bf1b673b2fdc0638766b930adaec228c.tar.gz
nsfisis.dev-d30dfc89bf1b673b2fdc0638766b930adaec228c.tar.zst
nsfisis.dev-d30dfc89bf1b673b2fdc0638766b930adaec228c.zip
feat(blog/nuldoc): migrate syntax highlighter from highlight.js to shiki.js
Diffstat (limited to 'vhosts/blog/public/posts/2024-04-29')
-rw-r--r--vhosts/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html27
1 files changed, 16 insertions, 11 deletions
diff --git a/vhosts/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html b/vhosts/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
index 99216975..c1390ced 100644
--- a/vhosts/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
+++ b/vhosts/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
@@ -14,8 +14,7 @@
<meta property="og:locale" content="ja_JP">
<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=79020a898c7052f79b32e90376a4497d">
- <link rel="stylesheet" href="/hl.css?h=340e65ffd5c17713efc9107c06304f7b">
+ <link rel="stylesheet" href="/style.css?h=60eb349e583f5bd51518a7eb98598043">
</head>
<body class="single">
<header class="header">
@@ -98,11 +97,13 @@
このことは、先ほどリンクを載せた <code>_composer</code> 関数を定義しているファイルの冒頭にも書かれている。
</p>
- <pre class="highlight" language="zsh"><code class="highlight"><span class="hljs-comment"># - @todo We don&#x27;t complete custom commands (including script aliases). This is</span>
-<span class="hljs-comment"># easy to do in the general case, but it probably requires some clever caching</span>
-<span class="hljs-comment"># to avoid introducing a noticeable lag to every completion operation, due to</span>
-<span class="hljs-comment"># the way command resolution works and the fact that discovering custom</span>
-<span class="hljs-comment"># commands requires making slow calls to Composer</span></code></pre>
+ <div class="codeblock" language="zsh">
+ <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span style="color:#6A737D"># - @todo We don't complete custom commands (including script aliases). This is</span></span>
+<span class="line"><span style="color:#6A737D"># easy to do in the general case, but it probably requires some clever caching</span></span>
+<span class="line"><span style="color:#6A737D"># to avoid introducing a noticeable lag to every completion operation, due to</span></span>
+<span class="line"><span style="color:#6A737D"># the way command resolution works and the fact that discovering custom</span></span>
+<span class="line"><span style="color:#6A737D"># commands requires making slow calls to Composer</span></span></code></pre>
+ </div>
</section>
<section id="section--what-i-want-to-achive">
@@ -122,7 +123,9 @@
まずは、Zsh で補完関数を提供する場合のボイラープレートコードを書く。以下は <code>~/.zshrc</code> にすべて書く前提だが、<code>autoload</code> を設定するなどすれば別ファイルに分離できる (詳細な手順は割愛)。
</p>
- <pre class="highlight" language="zsh"><code class="highlight">compdef _my_composer composer composer.phar</code></pre>
+ <div class="codeblock" language="zsh">
+ <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span style="color:#6F42C1">compdef</span><span style="color:#032F62"> _my_composer</span><span style="color:#032F62"> composer</span><span style="color:#032F62"> composer.phar</span></span></code></pre>
+ </div>
<p>
<code>compdef</code> は Zsh が用意している関数で、第一引数に補完関数の名前、第二引数以降に補完を適用するコマンド名を並べる。この場合は、<code>composer</code> コマンドや <code>composer.phar</code> コマンドに対して <code>_my_composer</code> を使って補完をおこなうよう定義している。
@@ -132,9 +135,11 @@
次に <code>_my_composer</code> を定義する。基本的にはデフォルトの <code>composer</code> コマンドの補完関数 (つまり <code>_composer</code> 関数) を使い、それが何も返さなかった場合に限り、Zsh のファイル・ディレクトリ補完へフォールバックする。
</p>
- <pre class="highlight" language="zsh"><code class="highlight"><span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">_my_composer</span></span>() {
- _composer <span class="hljs-string">&quot;<span class="hljs-variable">$@</span>&quot;</span> || _files <span class="hljs-string">&quot;<span class="hljs-variable">$@</span>&quot;</span>
-}</code></pre>
+ <div class="codeblock" language="zsh">
+ <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span style="color:#D73A49">function</span><span style="color:#6F42C1"> _my_composer</span><span style="color:#24292E">() {</span></span>
+<span class="line"><span style="color:#6F42C1"> _composer</span><span style="color:#032F62"> "</span><span style="color:#005CC5">$@</span><span style="color:#032F62">"</span><span style="color:#D73A49"> ||</span><span style="color:#6F42C1"> _files</span><span style="color:#032F62"> "</span><span style="color:#005CC5">$@</span><span style="color:#032F62">"</span></span>
+<span class="line"><span style="color:#24292E">}</span></span></code></pre>
+ </div>
<p>
<code>_composer</code> コマンドは何も補完候補がなかったとき非ゼロな exit status で終了するので、そうであったなら <code>_files</code> を呼び出す。<code>_files</code> は、Zsh がデフォルトで用意しているファイル・ディレクトリの補完をおこなう関数である。