Flutterの自動生成されたmain.dartとpubspec.yamlから大雑把にコメント行を除去する拡張を作ってみた(・∀・)

Flutterを触っていて、自動生成されるmain.dartとpubspec.yamlのコメント行の視認性の低さというかノイズ感にイライラして、簡単に除去する方法を探したがなんか見つからんかった(´・ω・`)

コメント行を折りたたんでも邪魔だし、手作業で置換するのもなんか嫌だったので、なんか拡張がないかなとぐぐっても見当たらず。
特に興味もなかったが、なんやかんやで拡張制作に挑戦した。
まるまる一日かかったが、まあ一応、完璧ではないが大まかには目的を果たせるようなので良しとする(`・ω・´)


環境構築

一日前のことなのに、あまり詳しく覚えていないのぅ("・ω・゙)

  1. VSCはインストール済みだったのでNode.jsを入れようと思ったが、管理ソフトから入れた方が良いようだったので、NVM(Node.js Version Manager)を入れた。Voltaとかいうのもあるみたいだったが、調べるのが面倒だったので(ノ∀`)
    https://github.com/coreybutler/nvm-windows/releases
    nvm-setup.exeで入れた。

  2. それでWindowsターミナルでnvmを利用してnode.jsを入れた。
  3. nvm lsで入ってないことを確認して、nvm list available で利用可能なバージョンを確認。
  4. nvm -install で最新版をインストール。 間違えて違うバージョンを入れた後に最新版を入れたので、NVM useをしたけど、本来は必要あるかどうかわからないw
  5. Yeomanヨーマンおじさんをインストールして、おじさんを起こす。Yeomanとは古くは召使や従僕、後に富裕農民を意味した言葉らしい。
    この辺りからは
    https://tercel-tech.hatenablog.com/entry/2024/03/07/233436
    https://zenn.dev/daifukuninja/articles/13a35a8bb3a4a1などの記事を参照して進めたような気がする…他にも色々読んだような気がするけど、あんまり覚えていない("・ω・゙)トシハトリタクナイノゥ

コマンドについてはpackage.jsonの"commands"の辺りを修正して、extension.tsのactivate関数の所でコマンド登録して挙動を実装すれば良いらしい。
なんかSyntax Highliterの問題なのかそれ以外の問題なのか、preとcodeタグが自動挿入されちゃうな(ノ∀`)

export function activate(context: vscode.ExtensionContext) {

<pre><code>const disposable = vscode.commands.registerCommand('commelim.commelim', () =&amp;gt; {
    const editor = vscode.window.activeTextEditor;
    if (editor) {
        const document = editor.document;
        var result = document.getText().replace(/\/\/.*\r\n[\s\t]*|\/\/.*\r[\s\t]*|\/\/.*\n[\s\t]*/g, '');
        result = result.replace(/#.*\r\n[\s\t]*|#.*\r\n[\s\t]*|#.*\n[\s\t]*/g, '');

        editor.edit((edit) =&amp;gt; {
            const start = new vscode.Position(0, 0);
            const end = new vscode.Position(document.lineCount, 0);
            edit.replace(new vscode.Range(start, end), result);
        }); 
    }

});
context.subscriptions.push(disposable);
</code></pre>

}

ここで使っている正規表現が正しいのかどうか、冗長でないかはよくわからない(ノ∀`)
本来なら、条件分岐とかしたほうがいいんだろうけれども、main.dartとpubspec.yamlから大まかにコメント行が除去できればいいというコンセプトの為、こんないい加減な実装になった。何故かわからないが実行後のpubspec.yamlの"version"の位置が変なので手作業で改行したり、最後のコメント行が除去できていない。後者に関しては正規表現の書き方の問題かもしれないが、前者の方は本当によくわからないw バイナリエディタで見ても他の行と違いはなさそうだったけど…

公開に関しては以下の記事を参照して、色々したら出来た(・∀・)
元々、Azureは何かの時に作っていた模様。パブリッシャーIDを突っ込むところがわからなくて少し悩んだが、普通に拡張のnameとかの階層のとこにやれば良かったのね(ノ∀`)
https://qiita.com/yusu79/items/44520c4c67864b0bb3e9
https://qiita.com/tkts_knr/items/92a15a9fe7475418b333
https://dotengineerblog.net/vscode-extension-develop-flow/

拡張機能のマーケットプレイスで"@category:"other" comment eliminator"だかで検索したら出てきたので、多分公開は出来ていると思う…

本当はもっとちゃんとしたやつを作りたい…というか、

誰かに作って欲しい(・∀・)オレデハナイダレカ


まあ久しぶりに色々と調べて面白かったといえば面白かったです(・∀・)(小並感)