บังคับให้เน้นไวยากรณ์ของภาษา GitHub กับไฟล์ต้นฉบับ


16

ฉันมีไฟล์ต้นฉบับ C ++ ในที่เก็บ GitHub ซึ่งมีนามสกุล. Cและใช้การเน้นไวยากรณ์ C ซึ่งฉันไม่ต้องการ

ฉันจะตั้ง GitHub ให้ใช้การเน้นไวยากรณ์ C ++ กับไฟล์เหล่านี้ได้อย่างไร

มีวิธีการที่ GitHub ระบุภาษาต้นฉบับสำหรับวัตถุประสงค์ในการเน้นไวยากรณ์หรือไม่

ดูเหมือนว่าจะใช้เฉพาะนามสกุลไฟล์ แต่มีวิธีบังคับภาษาเฉพาะหรือไม่

คำตอบ:


9

ฉันถาม support@github.com นี่คือคำตอบของพวกเขา:

เราใช้ Pygments (http://pygments.org/) เพื่อเน้นไวยากรณ์และพิจารณาว่า lexer ใดที่จะใช้ตามส่วนขยายของแต่ละไฟล์ โชคไม่ดีที่ดูเหมือนว่าจะไม่มีวิธีในการรับการเน้น C ++ โดยไม่ต้องเปลี่ยนชื่อไฟล์จาก * .c -> * .cpp และ * .h -> * .hpp

คุณสามารถทำได้โดยไม่สูญเสียประวัติคอมไพล์ของไฟล์โดยใช้git mvคำสั่ง


7

การตรวจจับภาษาของ GitHub นั้นทำโดยโมดูลภาษาศาสตร์ซึ่งเป็นโอเพ่นซอร์สที่สะดวก ส่วนใหญ่จะอาศัยส่วนขยายของไฟล์เพื่อตรวจจับภาษาถึงแม้ว่ามันจะฉลาดในการตรวจจับไฟล์ที่ไม่ชัดเจน (เช่น.hไฟล์) ในขณะที่คุณสามารถดูจากแฟ้มการกำหนดค่า , .cถูกกำหนดไว้อย่างมั่นคงเป็นไฟล์เซลเซียส เมื่อพิจารณาถึงจำนวนไฟล์ที่จะต้องมีการประเมินใน GitHub ประสิทธิภาพนั้นเป็นข้อกำหนดที่สำคัญหากมีความแม่นยำ

ดูเหมือนว่าต่อการกำหนดค่า repo ได้รับการปกครองโดยนักพัฒนาดังนั้นวิธีเดียวที่คุณสามารถทำไฮไลท์ไวยากรณ์ของไฟล์เป็น C ++ จะใช้ส่วนขยาย C ++ เพื่อรักษาส่วนขยายเหล่านั้นและมีการเน้นคุณอาจต้องลองใช้บริการอื่นหรือโฮสต์รหัสบางแห่งด้วยตัวคุณเอง

อัปเดต ต.ค. 2557 : GitHub ยังไม่หยุดนิ่งในปีที่แล้วพวกเขาได้นำเสนอฮิวริสติกขั้นพื้นฐานบางอย่างเพื่อช่วยกำหนดภาษาในไฟล์ เฉพาะเจาะจงมากขึ้นสำหรับคำถามนี้.cไฟล์จะถูกตรวจสอบเพื่อดูว่าเป็นC, C ++ หรือ Objective-C

คำตอบของฝ่ายสนับสนุนของ GitHubนั้นน่าสนใจเล็กน้อยพวกเขาใช้ Pygments เพื่อเน้นและตัวเล็ก แต่ชุดกฎอยู่ในโมดูลภาษาศาสตร์ของพวกเขาเอง สิ่งที่คุณหวังว่าพวกเขาจะรู้!


3

สำหรับไฟล์ที่มีshebangที่ shebang ถือว่าเมื่อพิจารณาภาษา แต่ดูเหมือนว่าจะให้น้ำหนักเท่า ๆ กันกับคนอื่น ๆ ราชสกุล นี่น่าจะเป็นข้อผิดพลาดครั้งใหญ่เนื่องจาก Shebang ควรกำหนดภาษาของไฟล์อย่างชัดเจน ซึ่งอาจทำให้เกิดปัญหากับการเน้น

คุณสามารถเพิ่มโทเค็นจำลองในรูปแบบของความคิดเห็นเพื่อ "เคล็ดลับตาชั่ง" ในความโปรดปรานของภาษาที่ถูกต้อง นี่คือการทดลอง แต่ฉันได้มีโชคกับมัน


1

การแชร์คำตอบของฉันที่นี่ผมค้นพบที่อื่น ๆ บน SO

ฉันค้นพบว่าคุณสามารถเพิ่มโมเดลหรือ emacs modeline ต่อLinguist readmeที่ด้านบนของไฟล์ต้นฉบับของคุณ (น่าเสียดายที่จำเป็นสำหรับแต่ละไฟล์) เพื่อบีบอัดไวยากรณ์เน้นสำหรับ Github.com ฉันคิดว่าคุณต้องเพิ่มไฟล์ต้นฉบับของคุณตามไฟล์languages.yml/* vim: syntax=C++ */


0

ตอนนี้คุณสามารถบังคับภาษาของไฟล์ใด ๆ ในที่เก็บของคุณโดยใช้แทนที่นักภาษาศาสตร์ Linguistเป็นไลบรารีโอเพ่นซอร์สที่ตรวจจับภาษาของไฟล์ทั่ว github.com

ในการบังคับให้.cไฟล์ของคุณถูกเน้นด้วยไวยากรณ์ C ++ คุณสามารถเพิ่มสิ่งต่อไปนี้ใน.gitattributesไฟล์ของคุณ:

*.c linguist-language=C++

ฉันได้ลองสิ่งนี้แล้ว*.S linguist-language=asmเพื่อประโยชน์ใด ๆ ...
mckenzm

@mckenzm ดูเหมือนว่าข้อความของคุณจะถูกตัดทอน .gitattributesบรรทัดคุณโพสต์ควรบังคับนักภาษาศาสตร์ที่จะรับรู้ทั้งหมด.Sเป็นไฟล์สภา หากไม่ได้ผลฉันสามารถดูที่เก็บเพื่อลองดูว่าเกิดอะไรขึ้น (คุณมีลิงก์หรือไม่)
pchaigno
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.