Erzwinge die Hervorhebung der GitHub-Syntax für Quelldateien


16

Ich habe einige C ++ - Quelldateien in einem GitHub-Repository, die eine Erweiterung von .C haben und C-Syntaxhervorhebung verwenden, was ich nicht möchte.

Wie kann ich GitHub so einstellen, dass C ++ - Syntaxhervorhebungen auf diese Dateien angewendet werden?

Gibt es eine Methode, wie GitHub die Ausgangssprache für Syntaxhervorhebungszwecke identifiziert?

Es sieht so aus, als würde nur die Dateierweiterung verwendet, aber gibt es eine Möglichkeit, eine bestimmte Sprache zu erzwingen?

Antworten:


9

Ich habe support@github.com gefragt. Das ist ihre Antwort:

Wir verwenden Pygments (http://pygments.org/), um die Syntax hervorzuheben und anhand der Dateierweiterungen zu bestimmen, welches Lexer verwendet werden soll. Es sieht also leider nicht so aus, als gäbe es eine Möglichkeit, C ++ hervorzuheben, ohne die Dateien von * .c -> * .cpp und * .h -> * .hpp umzubenennen.

Sie können dies tun, ohne den Git-Verlauf einer Datei zu verlieren, indem Sie den git mvBefehl verwenden.


7

Die Spracherkennung von GitHub erfolgt über das Linguist- Modul, das praktisch Open Source ist. Es stützt sich hauptsächlich auf die Dateierweiterung, um die Sprache zu erkennen, obwohl es etwas klug sein kann, mehrdeutige Dateien (wie z. B. .hDateien) zu erkennen. Wie Sie der Konfigurationsdatei entnehmen können , .cist diese fest als C-Datei definiert. Angesichts der Anzahl der Dateien, die auf GitHub bewertet werden müssen, ist die Effizienz eine wichtige Voraussetzung, wenn auch auf Kosten einer gewissen Genauigkeit.

Es sieht aus wie pro Repo - Konfigurationen wurden ausgeschlossen durch den Entwickler, so dass die einzige Möglichkeit, Dateien Syntax Highlight als C machen könnte ++ C ++ Erweiterungen zu verwenden wäre. Um diese Erweiterungen beizubehalten und hervorzuheben, müssen Sie möglicherweise einen anderen Dienst ausprobieren oder den Code selbst hosten.

Update Oktober 2014 : GitHub ist nicht stehen geblieben. Im letzten Jahr wurden einige grundlegende Heuristiken eingeführt , um die Sprache in der Datei zu bestimmen. Genauer gesagt, werden .cDateien nun daraufhin überprüft, ob es sich um C, C ++ oder Objective-C handelt.

Die Antwort des GitHub-Supports ist ein wenig interessant. Sie verwenden Pygments für die Hervorhebung und den Lexer, aber die Regelsätze befinden sich in ihrem eigenen Linguist-Modul. Was Sie hoffen würden, dass sie es wissen würden!


3

Bei Dateien mit einem Shebang wird der Shebang bei der Bestimmung der Sprache berücksichtigt, scheint jedoch im Verhältnis zu anderen Tokens gleichmäßig gewichtet zu sein . Dies scheint ein großer Fehler zu sein, da der Shebang die Sprache der Datei definitiv definieren sollte. Dies kann Probleme mit der Hervorhebung verursachen.

Um dieses Problem zu umgehen, können Sie Dummy-Token in Form eines Kommentars hinzufügen, um die richtige Sprache zu wählen. Das ist experimentell, aber ich hatte Glück damit .


1

Meine Antwort hier zu teilen, entdeckte ich anderswo auf SO .

Ich habe festgestellt, dass Sie eine vim- oder emacs-Modeline gemäß der Linguist-Readme- Datei am Anfang Ihrer Quelldatei hinzufügen können (leider für jede Datei erforderlich), um die Syntaxhervorhebung für Github.com zu erzwingen. Aufgrund der languages.yml- Datei müssten Sie /* vim: syntax=C++ */Ihrer Quelldatei wahrscheinlich etwas hinzufügen .


0

Sie können jetzt die Sprache jeder Datei in Ihren Repositorys erzwingen, indem Sie Linguist-Überschreibungen verwenden . Linguist ist die Open Source-Bibliothek, die die Sprache von Dateien auf github.com erkennt.

Um zu erzwingen, dass Ihre .cDateien mithilfe der C ++ - Grammatik hervorgehoben werden, können Sie Ihrer .gitattributesDatei Folgendes hinzufügen :

*.c linguist-language=C++

Ich habe dies *.S linguist-language=asmohne Erfolg versucht ....
McKenzm

@mckenzm Ihre Nachricht wurde anscheinend abgeschnitten. Die von .gitattributesIhnen gesendete Zeile sollte Linguist zwingen, alle .SDateien als Assembly zu erkennen . Wenn es nicht funktioniert, kann ich im Repository nachsehen, was passiert (haben Sie einen Link?).
Pchaigno
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.