Vimでソースコードから画像を生成するプラグインを作った
初めに
去年末くらいに、Vimでソースコードを画像化するプラグインを作りました。
しかし、このプラグインはgermanium
というGo製のCLIを必要としていて、外部コマンドをインストールする必要がありました。
基本的に外部依存はあんまり好きじゃないのですが、画像を生成するライブラリもないため、依存を剥がすのを半ばあきらめていました。
そして、つい先日コマンド依存を剥がすことに成功したので、新しく作ったプラグインの紹介を兼ねてその話を書いていきます。
プラグインについて
denopsのプラグインになります。
使い方はシンプルで、:Silicon
を実行するだけです。
ファイルに出力したい場合は:Silicon out.png
とパスを指定します。
パスがない場合は、自動的にクリップボードにコピーされます。
背景色やテーマ、フォントなどはオプションで指定できるので、詳細はヘルプもしくはリポジトリのREADMEを参照してください。
仕組み
Deno
のFFI APIを経由して、Rust製のソースコードから画像生成するSiliconを使っています。
DenoからSilicon
を使うためのライブラリも合わせて作りました。
FFI
なのでSilicon
自体をインストールすることなく使えます。つまり外部コマンド依存はこれで剥がせたわけです。
ただ、Linuxの場合は次のように、いくつかパッケージをインストールする必要があります。
詳細はSilicon
のREADMEを参照してください。
sudo pacman -S --needed pkgconf freetype2 fontconfig libxcb xclip
既知の問題
現在、deno-silicon
とdenops-silicon.vim
はDeno
のv1.24.3
以前までしか動きません。
v1.25.0
からはFFI
周りに破壊的変更があったため、まだその対応ができていない状態です。
ちなみに、以前作ったクリップボードのモジュールも同様の問題を抱えていますが、これもそのうち対応する予定です。
最後に
普段、denops-twihi.vimでソースコードを添付してつぶやくことが多く、画像化のプラグインを愛用していました。
この度、ずっと外部コマンド依存を剥がしたかったので、それができて満足しています。
みなさんもよかったら試してみてください。
Discussion