imomoの勉強記録

主に勉強の記録などを残していきます

VSCodeで競プロに役立つ拡張機能を作った

初めての拡張機能機能作成は難しかったです・・・

何を作ったか

競プロで言わずと知れた便利ツールのonline-judge-toolsにおいて、テストケースを簡単に追加できるVSCode拡張機能を作りました。

シェルスクリプトでもいいかなと思ったんですが、なんか需要高そうだったのとVSCode拡張機能作成してみたいなと思っていたのでやってみたらできました。
機能的にはほんの少し不満ですが、悪くはない出来だと思います。

拡張機能名は editSampleCase です
marketplace.visualstudio.com
アイコンは適当なのでいいのがあったら下さい・・・

f:id:iiiimmmmo:20201221151840p:plain
VSCodeマーケットプレイスに僕の拡張機能がある図

機能一覧

テストケースの追加

自分で見つけたエッジケースなどを追加したい時に使います

  1. テストケースを追加したい問題のソースコードを開く
  2. コマンドパレット(Ctrl + Shift + P)を開く
  3. コマンドパレットにaddsampleと入力し押す
  4. テストケース入力ファイルと出力ファイルが開かれる
  5. テストケースを入力して保存する

テストケースの削除

追加したサンプルケースが間違っていた場合に使います

  1. テストケースを削除したい問題のソースコードを開く
  2. コマンドパレット(Ctrl + Shift + P)を開く
  3. コマンドパレットにdelsampleと入力し押す
  4. 削除したいテストケースの番号を入力する(複数入力する場合は小文字カンマで区切る)

この拡張機能で追加していないサンプルケースも消すことが可能です

注意点

テストケースの追加4にて、ファイルを開く処理がありますが正常にファイルが開かれない場合があります
現時点での対応として最後に追加したテストケースファイルを開く処理を行うコマンド(opensample)を用意してあります
この件についてはまた時間があるときに対応します

ちなみにですが、VSCode拡張機能ページに行くと、動作しているgifがあるので分かりやすいかもしれません

ショートカットで呼び出したい場合

1. コマンドパレットで追加したいコマンドを入力したら、右端にある歯車を押します

f:id:iiiimmmmo:20201221155049p:plain
選択したコマンドに歯車が出てる

2. こんな画面が出てくるので、青く選択されているところをダブルクリックします

f:id:iiiimmmmo:20201221155216p:plain
キーバインディングの設定

3. 設定したいショートカットキーを押して適応します

f:id:iiiimmmmo:20201221155358p:plain
ショートカットキー

既に使用されていることもありますが、普段使っていないなら消しても問題ないと思います
消し方は下線が引かれているところをクリックし、設定されている動作が出てくるので、そこで右クリックで削除ができます

f:id:iiiimmmmo:20201221155635p:plain
既に使用されている例

免責事項

誤動作はなるだけ起きないように作成しましたが、
この拡張機能がコンテスト中に誤動作しても自己責任でお願いします

最後に

初めてVSCode拡張機能を作って、その過程で初めてgitを使用したりしました
分からないことだらけで大変でしたが、たくさんの学びになったと思います
バグや報告などはこちらにお願いします