ソースファイルでGitHub構文強調言語を強制する


16

GitHubリポジトリには、拡張子が.Cで、C構文の強調表示を使用しているC ++ソースファイルがありますが、これは望ましくありません。

これらのファイルにC ++構文の強調表示を適用するようにGitHubを設定するにはどうすればよいですか?

GitHubが構文強調表示の目的でソース言語を識別する方法はありますか?

ファイル拡張子のみを使用しているようですが、特定の言語を強制する方法はありますか?

回答:


9

support@github.comに尋ねました。これは彼らの返信です:

Pygments(http://pygments.org/)を使用して構文の強調表示を行い、各ファイルの拡張子に基づいて使用するレクサーを決定します。残念ながら、*。c-> * .cppおよび* .h-> * .hppのファイル名を変更せずにC ++を強調表示する方法はないようです。

git mvコマンドを使用して、ファイルのgit履歴を失うことなくこれを行うことができます。


7

GitHubの言語検出は、便利なオープンソースであるLinguistモジュールによって行われます。言語の検出は主にファイル拡張子に依存しますが、あいまいなファイル(ファイルなど.h)の検出には少し賢い場合があります。構成ファイルからわかるように.cはCファイルとしてしっかりと定義されています。GitHubで評価する必要のあるファイルの数を考えると、ある程度の精度を犠牲にしても、効率は重要な要件です。

リポジトリごとの構成は開発者によって除外されているように見えるため、C ++としてファイル構文を強調表示できる唯一の方法は、C ++拡張機能を使用することです。これらの拡張機能を保持して強調表示するには、別のサービスを試すか、自分でコードをホストする必要があります。

2014年10月の更新:GitHubはまだ立ち止まっておらず、昨年、ファイル内の言語を判断するための基本的なヒューリスティックを導入しました。この質問にさらに具体的に.cは、ファイルがC、C ++、またはObjective-Cであるかどうかが確認されるようになりました

GitHubサポートの答えは少しおもしろいです。彼らは強調表示とレクサーにPygmentsを使用しますが、ルールセットは独自のLinguistモジュールにあります。あなたが彼らが知っていることを願っています!


3

シバンのあるファイルの場合、シバンは言語を決定するときに考慮されますが、他のトークンに対して均等に重み付けされているよう です。Shebangはファイルの言語を明確に定義する必要があるため、これは大きなエラーのようです。これにより、強調表示に関する問題が発生する可能性があります

回避策として、コメントの形式でダミートークンを追加して、正しい言語を優先して「スケールを傾ける」ことができます。これは実験的なものですが、運がありました


1

ここで答えを共有すると、SOの別の場所で発見しました

ソースファイルの先頭にLinguistのREADMEに従ってvimまたはemacsモードラインを追加して(残念ながら、各ファイルに必要)、Github.comの構文の強調表示を強制できることを発見しました。languages.ymlファイルに基づいて、/* vim: syntax=C++ */ソースファイルに追加する必要があると思います。


0

Linguistオーバーライドを使用して、リポジトリ内の任意のファイルの言語を強制できるようになりましたLinguistは、github.comのファイルの言語を検出するオープンソースライブラリです。

.cC ++文法を使用してファイルを強調表示するには、.gitattributesファイルに次を追加します。

*.c linguist-language=C++

私はこれを試してみた*.S linguist-language=asm....無駄に
mckenzm

@mckenzmメッセージが切り捨てられたようです。.gitattributesあなたが投稿行がすべて認識する言語学者を強制すべきである.Sアセンブリなどのファイルを。うまくいかない場合は、リポジトリを見て、何が起こっているのかを確認することができます(リンクはありますか?)。
pchaigno
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.