TypeNovelのVSCode拡張を公開しました
VSCodeのマーケットプレースにvscode-typenovelというTypeNovel用のVisual Studio Code拡張を公開しました。
インストール後は、*.tnファイルを編集するときに有効になります。
実際に動かすと、こんな感じです。
主な機能
- ブロック(
@で始まる)と注釈($で始まる)のインテリセンス - 組み込みマークアップの引数説明を表示($rubyとか@notesとか)
- 文法のハイライトや、括弧を自動で閉じる設定
- セーブ時にエラーをチェック(注釈されていない制約、未定義の制約、重複した制約など)
ちなみに$で起動するインテリセンスは、もちろん組み込みタグだけではなく、ブロックで定義した制約の一覧も表示します。
連絡先
バグや機能要望はGithubにて受け付けています。
余談(開発でハマったところ)
1 .vscodeignoreファイルの挙動
vsce packageコマンドで拡張機能をパッケージ化するときに、.vscodeignoreファイルでパッケージに含めないファイルを定義できるのですが、このファイルに.gitignoreを入れると、.gitignoreの中身を勝手に見て、その中に記述されたファイルもパッケージの対象外にしてしまうみたいです。
つまり.gitignoreの中に「gitの管理は不要だが、vs拡張のパッケージには必要」なファイルを記述してしまうと、それらがvs拡張にパッケージされず、拡張機能が動かないことがあります。
これを回避するのは簡単で、ようするに.vscodeignoreに.gitignoreを記述しなければよいのです(幸い.gitignoreは、.vscodeignoreに記述しなくてもパッケージ対象にはならないので)。
ちなみにパッケージされるファイルを事前に確認したい場合は、vsce packageをする前にvsce lsとすると、パッケージされるファイル一覧を事前に確認することができます。
2 ローカルの.vsixファイルをVSCodeのUIから直インストール・アンインストールした際の挙動
ローカルでインストールした.vsixファイルを、VSCodeのUIからアンインストールした場合、.vscode/extensions/<拡張機能のフォルダ>が削除されないことがあります。
で、わかりにくいことに、この状態でVSCodeのUIから新しい.vsixファイルを読み込ませて上書きインストールさせようとすると、インストールは成功と表示されるのですが、実際には何も新しいファイルが展開されず、古いディレクトリだけが残っている状態になってしまいます。
つまりバグを修正して再インストールしても、修正されていない古い拡張が残り続けるので、まったく修正されていない状態になっているわけです。
この状態について、最初は「修正が正しくない」と判断して、ハマってしまいました。そこから「実は再インストール自体がなされておらず、古い拡張が残り続けているだけ」と気付くのに小一時間ぐらいかかりました。
ようするに「ローカルでインストール・アンインストールのテストするときは、UIを介さずに手動で拡張機能のディレクトリを削除する必要がある」ということになります。
