.gitattributes
に次の1行を足すと、vscodeの設定ファイルがGitHubでJSONC (JSON with Comments) としてsyntax highlightされるようになります。
.vscode/*.json linguist-language=jsonc
GitHubのsyntax highlightは github/linguist で制御されています。これに同梱されている overrides.md
というドキュメントに、repoごとのカスタマイズ方法が載っています。
https://github.com/github/linguist/blob/master/docs/overrides.md
syntax highlightだけでなく、GitHub repoの統計(どの言語がN%、みたいなやつ)からの除外、自動生成されたかどうかのフラグ(統計から除外されるのと、PRでdiffがデフォルトで展開されなくなる)、などを制御できます。
syntax highlightのデフォルトおよび利用可能な値は languages.yml
に定義されているので、そこを参考にして設定できます。
https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
ハイライトの実例はこんな感じ: https://github.com/msgpack/msgpack-javascript/blob/main/.vscode/launch.json
そもそもGitHubがデフォルトで .vscode/*.json
をJSONCとしてもいいんじゃないか?とおもってpull-req github/linguist#6221も提案してみたのですが、これは採用予定なしと。理由は次の通り:
- basenameだけでなくpathnameをみるというのは破壊的変更で影響範囲が大きすぎる。もし本当にやるなら慎重な検討が必要だが、いまのところ恩恵を受けるのは
.gitattributes
を指定していないvscode userだけ - GitHub 11年の歴史でsyntax highlightの際にpathname全体をみるという要求はvscodeの設定ファイルだけ
- そもそもvscodeが
*.json
ファイルにJSONと非互換なフォーマット(JSONC)を書けるというのは慣習に違反していて無作法では?もしこの件について何かしたいならvscodeが.vsocde/*.jsonc
をサポートするべきではないか
正論すぎますね。個人的には、JSONがコメントと末尾コンマを許容するようになるとこの件のみならずJSON/JSONCにまつわる様々な問題が解決してみんな幸せになれるので、Microsoftのvscode teamがそういう提案をしてくれるといいなと思います(いや提案するのは誰でもいいですが)。逆に、そういう未来を想定するならばvscodeが .vscode/*.jsonc
をサポートする必要はないのかなとも思います。現状だといずれにせよ .gitattibutes
でカスタマイズできますしね。