GitHubのリポジトリに追加したファイルにシンタックスハイライトが適用されなかった
TL;DR
.gitattributes に下記を追記 (.gitconfig の場合)
gitconfig linguist-language=Git-Config
はじめに
自分のdotfilesレポジトリにgitconfigを追加したときに、GitHubのWeb UI上でファイルタイプが検出されず、シンタックスハイライトが適用されませんでした。
この記事ではデフォルトで検出されないファイルタイプを設定し、シンタックスハイライトを適用する方法について記載します。
ファイルタイプの設定について
GitHubでのファイルタイプ検出にはLinguistライブラリが使用されており、そのドキュメントはGitHub上で公開されています。
このリポジトリ内でLinguistの動作を変更する方法が記載されています。
このページによると、動作を変更するには以下の2つの方法があります。
-
.gitattributes
に設定を追記する - VimまたはEmacsのモードライン[1]を設定する
設定する値はlanguages.ymlの記述から、Git-Config
(空白をハイフンに置き換える)、gitconfig
、gitmodules
のいずれかであることが確認できます。
ここでは Git-Config
を設定する手順で進めます。
.gitattributes に追記
gitconfigにlinguist-language=Git-Config
を指定します。
gitconfig linguist-language=Git-Config
モードラインを設定
Vim
Vimではモードラインを使用してファイルタイプを設定します。
# vi: ft=gitconfig:
Emacs
Emacsではファイルローカル変数を使用してファイルタイプ (=メジャーモード) を設定します。
ファイル先頭に追加する記法のみLinguistに認識されます。
# -*- mode: gitconfig -*-
Linguistで認識されるためにはモードにgitconfig
を指定する必要がありますが、Emacsにはgitconfig-mode
はないのでエラーになります。 (設定されるのはconf-mode
)
モードラインで指定するのはVim/Emacsで対応していないファイルタイプの可能性があるので.gitattributes
での設定をおすすめします。
おわりに
上記の通りに変更を行ってリポジトリにプッシュすることで、gitconfigをGitHub上で閲覧したときにシンタックスハイライトを適用させることができました。
-
Emacsのモードラインは別のもの (Vimでいうステータスライン)を指しますが、原文のニュアンスのままにしています。 ↩︎
Discussion