VSCodeでPerlのアウトラインを作るのをやっていた.左下のOUTLINEってコーナーを出すための活動.
最低限は動くけど,構文解析しているわけではなくて,粗悪な正規表現で見ている.sub {
があると,名前が{
になってしまう.ほかのエディタ用のPerlのプラグインなどから,もうちょっとほどよい正規表現を借りてきたら精度上がりそう.
/\b(package|sub)\b +([^ ;\n]+)/g;
もうちょっと進むと,language-serverを作ることになると思う.perlのプロセスを裏で動かしておいて,JSON-RPCで投げ付けていくと,シンボル列が返ってくる,みたいな.
参考になったのはこのへん
- https://github.com/Gimly/vscode-fortran/blob/229cddce53a2ea0b93032619efeef26376cd0d2c/src/documentSymbolProvider.ts
- 素朴.1行ずつ見ていて遅い.
- https://github.com/Microsoft/vscode/blob/34ba2e2fbfd196e2d6db5a4db0e42d03a97c655e/extensions/markdown-language-features/src/features/documentLinkProvider.ts
- MarkdownからURLを抜き出してリンクにする処理.document.getText()とかdocument.positionAt(offset)とか.
使いたかったら,~/.vscode/extensions/以下にcloneすると動きます.
github.com