🎨

GitHubのリポジトリに追加したファイルにシンタックスハイライトが適用されなかった

に公開

TL;DR

.gitattributes に下記を追記 (.gitconfig の場合)

.gitattributes
gitconfig linguist-language=Git-Config

はじめに

自分のdotfilesレポジトリにgitconfigを追加したときに、GitHubのWeb UI上でファイルタイプが検出されず、シンタックスハイライトが適用されませんでした。

この記事ではデフォルトで検出されないファイルタイプを設定し、シンタックスハイライトを適用する方法について記載します。

ファイルタイプの設定について

GitHubでのファイルタイプ検出にはLinguistライブラリが使用されており、そのドキュメントはGitHub上で公開されています。
https://github.com/github/linguist

このリポジトリ内でLinguistの動作を変更する方法が記載されています。
このページによると、動作を変更するには以下の2つの方法があります。

  • .gitattributesに設定を追記する
  • VimまたはEmacsのモードライン[1]を設定する

設定する値はlanguages.ymlの記述から、Git-Config (空白をハイフンに置き換える)、gitconfiggitmodules のいずれかであることが確認できます。

https://github.com/github-linguist/linguist/blob/c27ac0c1daf3865e2b45ee3908d06b5825161d17/lib/linguist/languages.yml#L2508-L2524

ここでは Git-Config を設定する手順で進めます。

.gitattributes に追記

gitconfigにlinguist-language=Git-Configを指定します。

.gitattributes
gitconfig linguist-language=Git-Config

モードラインを設定

Vim

Vimではモードラインを使用してファイルタイプを設定します。

gitconfig
# vi: ft=gitconfig:

Emacs

Emacsではファイルローカル変数を使用してファイルタイプ (=メジャーモード) を設定します。
ファイル先頭に追加する記法のみLinguistに認識されます。

gitconfig
# -*- mode: gitconfig -*-

Linguistで認識されるためにはモードにgitconfigを指定する必要がありますが、Emacsにはgitconfig-modeはないのでエラーになります。 (設定されるのはconf-mode)

モードラインで指定するのはVim/Emacsで対応していないファイルタイプの可能性があるので.gitattributesでの設定をおすすめします。

おわりに

上記の通りに変更を行ってリポジトリにプッシュすることで、gitconfigをGitHub上で閲覧したときにシンタックスハイライトを適用させることができました。

脚注
  1. Emacsのモードラインは別のもの (Vimでいうステータスライン)を指しますが、原文のニュアンスのままにしています。 ↩︎

Discussion