Categories
Tags
Alamofire Android AppStoreConnect AWS Bun C++ cAdvisor CFW Cloudflare Cloudflare Access Cloudflare KV Cloudflare Tunnel Cloudflare Workers D1 Deno DevContainer Discord Docker ECR ECS Edizon Emulator EmuMMC Fastlane Firestore Frida Ghidra Git GitHub GitHub Actions GitLab GPG Grafana HACGUI Heroku Homebrew Hono IDA Pro iOS IPSwitch Jailbreak Javascript JSON JWT LanPlay Linode macOS Mirakurun MongoDB NestJS NextJS Nintendo Nintendo Switch NodeJS PHP PostgreSQL Prisma Programming Prometheus Python React Realm RealmSwift Ruby Salmon Run Salmonia3+ Shogi Sideload Snap Splatoon Splatoon2 Splatoon3 SSH Stable Diffusion Starlight Swift Swift Package SwiftUI Switch TensorRT Turf War Typescript TypeScript Ubuntu Ubuntu Server VNC VPN VSCode Vue WARP Wireguard XCode Xcode yarn zsh 家電 横歩取り
461 words
2 minutes
Denoにシンタックスハイライトをつける
シンタックスハイライト
シンタックスハイライトとは、コードブロックに書かれたコードに対していい感じに色を付けてくれる仕組みのこと。
これをやるにはコードブロック内のコードの解析が必要なので Javascript の手を借りる必要がありますが、シンタックスハイライトをするためのプラグインというものは既に開発されて普及しており、
あたりが有名なものかと思います。
で、Deno は Prism.js をサポートしているはずなのですが、何故かシンタックスハイライトが効きません。おかしいですね。
main.ts
// Add syntax highlighting support for C by default
import "https://esm.sh/[email protected]/components/prism-c?no-check";
export { UnoCSS };
export type UnoConfig = typeof UnoCSS extends (
arg: infer P | undefined
) => unknown
? P
: never;
それもそのはずで、deps.ts
を確認してみると、デフォルトで対応しているのは C 言語のみで(一応 js 指定で Javascript などもシンタックスハイライトが効くが ts は効かない)、それ以外はオプショナルだからです。
なお、この章の執筆にあたっては@p1atdev氏にご助力を頂きました。
よって、ユーザーが個別にシンタックスハイライトを効かせたいのであれば、それをmain.ts
に伝える必要があります。
で、サポートしている言語についてはGitHubで公開されているので、同じような感じでmain.ts
に追記するだけです。
うちのブログではSwift
, Python
, Typescript
, JSON
を扱うことが多かったので、
import "https://esm.sh/[email protected]/components/prism-swift.min?no-check";
import "https://esm.sh/[email protected]/components/prism-typescript.min?no-check";
import "https://esm.sh/[email protected]/components/prism-python.min?no-check";
import "https://esm.sh/[email protected]/components/prism-bash.min?no-check";
import "https://esm.sh/[email protected]/components/prism-json.min?no-check";
import "https://esm.sh/[email protected]/components/prism-scheme.min?no-check";
を追記しました。
これで問題なく Typescript などに対してもシンタックスハイライトが効くようになります。シンタックスハイライトが効くか効かないかでコードブロックの可読性に大きく関わるので、うまく対応させられてよかったです。
記事は以上。
Denoにシンタックスハイライトをつける
https://fuwari.vercel.app/posts/2022/08/syntaxhighlight/