Emacs
Vim
GitHub
linguist

GitHub のシンタックスハイライト判定を上書きする

More than 1 year has passed since last update.


tl;dr


  • GitHub :octocat: は Emacs や Vim の modelines に沿ったシンタックスハイライトをしてくれます

  • .gitattributes でも設定できるはずですが、いまのところ有効ではないようです

    (2017-04-08 時点)


背景

「このファイルは実質 YAML なんだし、 GitHub 上でもそう表示してほしいなあ」なんてことありますよね。(たとえば salt-ssh の Saltfile ですとか)

王道は linguistlanguages.yml へ Pull Request を出すことかと思いますが、ほかになにか手っ取り早い方法がないかと探したところ、 README にこんな記載がありました。


Using gitattributes

Add a .gitattributes file to your project and use standard git-style path matchers for the files you want to override to set linguist-documentation, linguist-language, and linguist-vendored. .gitattributes will be used to determine language statistics and will be used to syntax highlight files. You can also manually set syntax highlighting using Vim or Emacs modelines.



検証

実際に検証してみました。


素の状態


  • シンタックスハイライトされません

  • HTML のクラスは type-text です

https://github.com/elim/test-gh-linguist-overriding/blob/1ae6834/Saltfile

plain.png

plain-type.png


.gitattributes

下記の内容を用意しました


.gitattributes

Saltfile linguist-language=YAML



  • シンタックスハイライトされません

  • HTML のクラスが type-yaml になります

https://github.com/elim/test-gh-linguist-overriding/blob/62cf59f/.gitattributes

https://github.com/elim/test-gh-linguist-overriding/blob/62cf59f/Saltfile

gitattributes-type.png


Emacs 形式の modeline


  • シンタックスハイライトされます

  • HTML のクラスが type-yaml になります

https://github.com/elim/test-gh-linguist-overriding/blob/2be0582/Saltfile

emacs-style-modelines.png

emacs-style-modelines-type.png


Vim 形式の modeline

https://github.com/elim/test-gh-linguist-overriding/blob/76a9ada/Saltfile

vim-style-modelines.png

vim-style-modelines-type.png


以上です。

まだマイナーな環境や自作言語、自作 DSL に適用すると便利かもですね :diamond_shape_with_a_dot_inside: