TyranoScript LSP
日本語 ・ English ・ 中文
日本語 ・ English ・ 中文
ノベルゲームエンジン **ティラノスクリプト**のシナリオ執筆を支援する VS Code 拡張機能です。
シンタックスハイライトに加え、高速な言語サーバーによる診断・補完・定義ジャンプ・参照検索を補助します。

機能一覧
シンタックスハイライト
.ks ファイルを開くと、ティラノスクリプトの文法により各要素が色分けされます。
起動した瞬間から即座に有効になるため、シナリオを開いた瞬間から読みやすくなります。

ハイライトされる主な要素:
- ラベル定義 —
*start|オープニング
- タグ —
[bg storage=room.jpg time=1000]
- 行頭コメント —
; ここはコメント
- キャラクター名行 —
#あかね / #あかね:happy
[iscript] … [endscript] 内は JavaScript としてハイライト可能
[html] … [endhtml] 内は HTML としてハイライト
リアルタイム診断
入力・保存のたびにシナリオ全体を解析し、問題のある箇所に波線を表示します。
.ks ファイル単体ではなく プロジェクト全体(複数ファイル) を横断して検証するため、別ファイルのラベルや素材まで含めてチェックできます。

検出できる問題の例:
| 診断コード |
内容 |
xsem-unknown-tag |
ビルトインにも定義済みマクロにも無い未知のタグ([teleprot] など綴り間違い) |
sem-unknown-label-target |
同一ファイル内に存在しないラベルへのジャンプ(target=*nowhere) |
xsem-unknown-label-in-storage |
別ファイルに存在しないラベルへの [jump](storage=scene2.ks target=*missing) |
xsem-missing-asset |
storage= で指定した画像・音声などの素材が見つからない |
xsem-unknown-param / xsem-missing-param |
タグに対する未知のパラメータ、または必須パラメータの欠落 |
問題は「問題(Problems)」パネル(Ctrl+Shift+M)に一覧表示され、クリックすると該当箇所へジャンプできます。
ホバー情報
タグ・パラメータ・ラベルにマウスカーソルを重ねる(またはカーソルを置いて Ctrl+K Ctrl+I)と、その要素の説明がポップアップ表示されます。
とくに [jump] の飛び先ラベルにホバーすると、そのラベルがどのファイルで定義されているかまで解決して教えてくれます。

上の例では target=*top にホバーすることで、*top が data/scenario/scene2.ks に定義されたラベルであることが一目で分かります。
入力補完
タグ名・パラメータ名・パラメータ値の候補を自動で提示します。
[ を入力した直後や、入力途中で Ctrl+Space を押すと候補リストが開き、各候補の説明も右側に表示されます。

- タグ名補完 —
[cha まで入力すると chara_show / chara_new / chara_hide … を提示
- パラメータ名補完 — そのタグが受け付けるパラメータのみを提示
[macro name=greet] で定義したマクロも [greet] として補完されます
定義へ移動
ラベルやマクロ、iscript・cond・exp 内の変数、プラグインタグの上で 定義へ移動(F12)・その場でのぞき見(Alt+F12)・参照を検索(Shift+F12)が使えます。
storage= で別ファイルを指定したジャンプも解決されるため、ファイルをまたいでシナリオの流れを追跡できます。
f / sf / tf / mp のプロパティは、.ks の埋め込み式・iscript・data/ 配下の外部 .js を横断します。
[custom_tag] から TYRANO.kag.ftag.master_tag.custom_tag などのJavaScript登録位置へ移動できます。
- 外部
.js 側からもTyranoScriptの定義・参照へ移動できます。通常のJavaScript言語モードとVS Code標準のJavaScript機能は維持されます。

上の例では、first.ks の [jump storage=scene2.ks target=*top] から *top の定義を辿り、scene2.ks の該当行をその場に展開しています。
アウトライン
ファイル内の ラベル・マクロ・キャラクター が構造化され、サイドバーの「アウトライン」ビューと、
現在のファイル内位置についてはエディタ上部の「パンくず(breadcrumbs)」に一覧表示されます。
長いシナリオでも、目的のラベルへワンクリックで移動できます。

Ctrl+Shift+O でシンボル検索を開けば、ラベル名を入力して素早くジャンプすることも可能です。
設定項目
| 設定キー |
既定値 |
説明 |
tyranoscript.server.path |
"" |
tyrano-lsp 実行ファイルの絶対パス。空の場合は自動検出します。 |
tyranoscript.trace.server |
off |
VS Code と言語サーバー間の通信ログレベル(off / messages / verbose)。不具合報告時に便利です。 |
tyranoscript.javascript.navigation.enabled |
true |
data/**/*.js 内でもTyranoScriptの定義移動・参照検索を有効にします。他のJavaScript拡張と競合する場合は無効化できます。 |
バグ報告・機能要望
不具合の報告や機能追加のご要望は、GitHub の Issue か、Google Formまでお寄せください。
tyranoscript.trace.server を verbose に設定して得られる通信ログを添えていただけると、調査がスムーズです。
開発の応援・寄付のお願い
この拡張機能と言語サーバーは個人開発による無償のプロジェクトです。
もし開発の助けになったと感じていただけたら、下記のリンクから応援していただけると励みになります。
OFUSEで応援を送る
ライセンス
MIT License の下で公開されています。