🐯

VSCode拡張機能にパッチを当ててカスタマイズしたお話

2024/07/08に公開

最近Excel to Markdown tableというExcelをコピーしてマークダウンの表でペースとしてくれるステキVSCode拡張を使う機会があったのですが、全角文字を扱うときにちょっと面倒なことが起きました。


なにやらスペースが荒ぶっている?というのも、その列の最大文字数に合わせてスペースが入る挙動をするようだ。

しかし入力しているのは日本語。スペース1つが1文字の幅に対応しないし、文字ごとに幅が違うフォントだってある。
気を利かせてくれているすごい機能なのだけど、日本語入力している身としては、それだったら詰めて表示してもらったほうが嬉しい。
そんなわけで、こいつを無効化してスペースを入れないようにしてしまおう。そんな記事。

VSCode拡張を探して書き換えてしまう

VSCode拡張は.vscodeフォルダに格納されているようです。
わたしの場合はユーザー名フォルダの直下にそのフォルダがありました。

この.vscodeフォルダの中にあるextensionsにダウンロードした拡張機能が入っていて、この中にあるファイルをいじれば挙動を変えられそうだ。

具体的にはこんな感じのフォルダ構造。

C:
├ ユーザー
│  ├ <ユーザー名>
│  │  ├ .vscode
│  │  │  ├ extentions
│  │  │  │  └ <VSCode拡張たち(1拡張機能につき1フォルダ)>
│  │  │  ...

さて、どこをいじるべきか推理するお時間です。わたしはVSCode拡張のことは何も知らないので、勘と匂いだけで探していきます。

今回扱う拡張機能はExcel to Markdown tableなので、当然csholmq.excel-to-markdown-table-1.3.0というフォルダを見てみます。(ちなみにcsholmqは製作者のgithubのIDみたい)

その中で更に絞り込むために、Altで検索する(この拡張はAlt+Shift+vで貼り付けを行うのでこの検索をする)と、out/extension.jsファイル内でactivateという関数を発見。
そのなかでpasteTextという関数を呼び出しているらしい。

VSCode拡張機能特有のオブジェクトたちはさっぱりだが、pasteText関数内のpasteが貼り付ける文字列っぽい。

そこがわかれば、あとはJSの書き方と同じ容量で、貼り付ける文字列の余分なスペースと余分なハイフンをreplaceしてしまえば完成。

paste = paste.replace(/  +/g, " ")
paste = paste.replace(/----+/g, "---")

全ての2つ以上連続しているスペースと、4つ以上連続しているハイフンを縮めてしまおうという魂胆。

修正して保存したらVSCodeを再起動して、Excelの値をAlt+Shift+vで貼り付けると、ちゃんと余分な部分が置き換えられている状態でペーストされた。

そんなこんなで、VSCode拡張特有のものはさっぱりでも、簡単なものをちょっとカスタマイズするだけならなんとかやってやれないこともないんだな、とそんなところで短いけどこの記事はおしまい。
(コード中ではvscode.window.activeTextEditerを貼り付ける文字列に置き換える(?)ことでペーストをしているらしい。その辺の部分はさっぱり)

Discussion