GitHub sözdizimini kaynak dosyalarda vurgulama dilini zorla


16

GitHub deposunda .C uzantısı olan ve istemediğim C sözdizimi vurgulama kullanarak bazı C ++ kaynak dosyaları var .

GitHub'ı bu dosyalara C ++ sözdizimi vurgulaması uygulayacak şekilde nasıl ayarlayabilirim?

Sözdizimi vurgulama amaçları için GitHub'ın kaynak dili nasıl tanımladığı konusunda bir yöntem var mı?

Sadece dosya uzantısını kullanıyor gibi görünüyor, ancak belirli bir dili zorlamanın bir yolu var mı?

Yanıtlar:


9

Support@github.com'a sordum; bu onların cevabı:

Sözdizimi vurgulaması yapmak ve her bir dosyanın uzantısına göre hangi lexer'ın kullanılacağını belirlemek için Pygments (http://pygments.org/) kullanırız. Ne yazık ki, * .c -> * .cpp ve * .h -> * .hpp dosyalarını yeniden adlandırmadan C ++ vurgulama almanın bir yolu yok gibi görünüyor.

git mvKomut kullanarak bir dosyanın git geçmişini kaybetmeden bunu yapabilirsiniz .


7

GitHub'ın dil tespiti , uygun bir şekilde açık kaynak olan Linguist modülü tarafından yapılır . Belirsiz dosyaları (dosyalar gibi .h) algılamak biraz akıllı olsa da, dili algılamak için öncelikle dosya uzantısına dayanır . Eğer görebileceğiniz gibi yapılandırma dosyası , .csıkıca C dosya olarak tanımlanır. GitHub'da değerlendirilmesi gereken dosya sayısı göz önüne alındığında, verimlilik bir miktar doğruluk pahasına olsa bile önemli bir gereksinimdir.

Repo yapılandırmaları geliştirici tarafından dışlanmış gibi görünüyor , bu yüzden C ++ uzantıları kullanmak gibi dosyaları sözdizimi vurgulamak için tek yolu. Bu uzantıları korumak ve vurgulamak için başka bir hizmeti denemeniz veya kodu kendiniz bir yerde barındırmanız gerekebilir.

Güncelleme Ekim 2014 : GitHub hala durmadı, geçen yıl dosyadaki dili belirlemeye yardımcı olacak bazı temel buluşsal yöntemler getirdiler . Bu sorulara daha spesifik olarak, .cdosyalar artık C, C ++ veya Objective-C olup olmadığını kontrol eder .

GitHub desteğinin cevabı biraz ilginç, vurgulamak ve lexer için Pygments kullanıyorlar, ancak kural setleri kendi Linguist modülünde. Hangisini bileceklerini umuyorsun!


3

Bir Shebang'lı dosyalar için , dili belirlerken Shebang dikkate alınır, ancak diğer belirteçlere eşit olarak ağırlıklandırılmış gibi görünür . Bu büyük bir hata gibi görünüyor çünkü Shebang kesinlikle dosyanın dilini tanımlamalıdır. Bu, vurgulamayla ilgili sorunlara neden olabilir .

Geçici bir çözüm olarak, doğru ölçek lehine "ölçekleri devirmek" için yorum şeklinde kukla belirteçleri ekleyebilirsiniz. Bu deneysel ama şansım oldu .


1

Cevabımı burada paylaşarak SO'nun başka bir yerinde keşfettim .

Github.com sözdizimi vurgulamayı zorlamak için, kaynak dosyanızın üst kısmına (ne yazık ki, her dosya için gerekli) Linguist benioku başına bir vim veya emacs modelini ekleyebileceğinizi keşfettim. Language.yml dosyasına dayanarak, /* vim: syntax=C++ */kaynak dosyanıza eklemeniz gerektiğini düşünüyorum .


0

Artık Linguist geçersiz kılmaları kullanarak depolarınızdaki herhangi bir dosyanın dilini zorlayabilirsiniz . Linguist , github.com'daki dosyaların dilini algılayan açık kaynaklı bir kütüphanedir.

.cDosyalarınızı C ++ dilbilgisi kullanarak vurgulanmaya zorlamak için dosyanıza aşağıdakileri ekleyebilirsiniz .gitattributes:

*.c linguist-language=C++

Ben *.S linguist-language=asmboşuna için denedim ....
mckenzm

@mckenzm Görünüşe göre mesajınız kesildi. Gönderdiğiniz .gitattributessatır, Linguist'i tüm .Sdosyaları Meclis olarak tanımaya zorlamalıdır . Eğer işe yaramazsa, neler olduğunu görmek için depoya bakabilirim (bağlantınız var mı?).
pchaigno
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.