シンタックス(構文) ハイライター用の拡張機能(Extension)を作る。拡張機能として公開することは目指さない。
インストールしていない場合は以下をインストールする。
- VS Code のインストール https://code.visualstudio.com/Download
- node のインストール https://nodejs.org/en/
- Gitのインストール https://git-scm.com/downloads
VS Codeの雛形インストール
npm install -g yo generator-code yo code
色々聞かれる。今回はLISE++ファイル(*.lpp)を読む拡張機能を作るので以下の設定とした。
New Language Support を選ぶ URL or file to import, or none for new: → `Enter` What's the name of your extension? → `LISE-Reader` What's the identifier of your extension? → `Enter` What's the description of your extension? → `Enter` Language id: → `lise` Language name: →`LISE` File extensions: → `.lpp` Scope names: → `lise-file.lpp` Initialize a git repository? → Y Open with code を選択
lise.tmLanguage.json
を見ると
{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "LISE", "patterns": [ { "include": "#keywords" }, { "include": "#strings" } ], "repository": { "keywords": { "patterns": [{ "name": "keyword.control.lise", "match": "\\b(if|while|for|return)\\b" }] }, "strings": { "name": "string.quoted.double.lise", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.lise", "match": "\\\\." } ] } }, "scopeName": "lise-file.lpp" }
これが意味するところは、
if
while
for
return
が完全一致でキーワードに"
で囲まれた文字は文字列扱いに。その中で\
直後の1文字はエスケープ文字
である。実際に試してみよう。F5
でデバッグ開始すると、新しいvscode のウィンドウが立ち上がる。右下の言語モードの選択から LISE(lise)
を選べるようになる。
確かにハイライトが機能しているようだ。
ここまでは簡単だが、各自の言語の構文を一つ一つ実装していく必要がある。
LISE++ファイルの構文を実装してみたので、気になる人はGIthub のリポジトリを参考にしてほしい。
拡張機能として公開したい人はこのブログを参照されたし。