Buộc ngôn ngữ tô sáng cú pháp GitHub trên các tệp nguồn


16

Tôi có một số tệp nguồn C ++ trong kho GitHub có phần mở rộng là .C và đang sử dụng tô sáng cú pháp C, điều mà tôi không muốn.

Làm cách nào tôi có thể đặt GitHub để áp dụng tô sáng cú pháp C ++ cho các tệp này?

Có phương pháp nào để GitHub xác định ngôn ngữ nguồn cho mục đích tô sáng cú pháp không?

Có vẻ như nó chỉ sử dụng phần mở rộng tập tin, nhưng có cách nào để buộc một ngôn ngữ cụ thể không?

Câu trả lời:


9

Tôi đã hỏi support@github.com; đây là câu trả lời của họ:

Chúng tôi sử dụng Pygments (http://pygments.org/) để làm nổi bật cú pháp và xác định từ vựng nào sẽ sử dụng dựa trên mỗi phần mở rộng của tệp. Thật không may, có vẻ như không có cách nào để làm nổi bật C ++ mà không đổi tên các tệp từ * .c -> * .cpp và * .h -> * .hpp.

Bạn có thể làm điều này mà không làm mất lịch sử git của tệp bằng cách sử dụng git mvlệnh.


7

Phát hiện ngôn ngữ của GitHub được thực hiện bởi mô-đun Linguist , đây là nguồn mở thuận tiện. Nó chủ yếu dựa vào phần mở rộng tệp để phát hiện ngôn ngữ, mặc dù có thể hơi thông minh để phát hiện các tệp mơ hồ (chẳng hạn như .htệp). Như bạn có thể thấy từ tệp cấu hình , .cđược xác định chắc chắn là tệp C. Với số lượng tệp phải được đánh giá trên GitHub, hiệu quả là một yêu cầu chính, nếu phải trả giá chính xác.

Dường như mỗi repo cấu hình đã được loại trừ bởi nhà phát triển, vì vậy cách duy nhất bạn có thể làm cho tập tin cú pháp nổi bật như C ++ sẽ được sử dụng C mở rộng ++. Để giữ các tiện ích mở rộng đó và làm nổi bật, bạn có thể phải thử dịch vụ khác hoặc tự lưu trữ mã ở đâu đó.

Cập nhật tháng 10 năm 2014 : GitHub không đứng yên, trong năm ngoái họ đã giới thiệu một số phương pháp phỏng đoán cơ bản để giúp xác định ngôn ngữ trong tệp. Cụ thể hơn cho câu hỏi này, .ccác tệp hiện được kiểm tra để xem liệu chúng là C, C ++ hay Objective-C.

Câu trả lời của bộ phận hỗ trợ GitHub rất thú vị, họ sử dụng Pygments để làm nổi bật và từ vựng, nhưng các quy tắc nằm trong mô-đun Ngôn ngữ học của riêng họ. Mà bạn hy vọng họ sẽ biết!


3

Đối với các tệp có Shebang , Shebang được xem xét khi xác định ngôn ngữ nhưng dường như có trọng số đồng đều so với các mã thông báo khác . Đây có vẻ là một lỗi lớn vì Shebang nên xác định rõ ràng ngôn ngữ của tệp. Điều này có thể gây ra vấn đề với làm nổi bật.

Như một giải pháp thay thế, bạn có thể thêm mã thông báo giả dưới dạng nhận xét để "tip quy mô" có lợi cho ngôn ngữ chính xác. Đây là thử nghiệm nhưng tôi đã có may mắn với nó .


1

Chia sẻ câu trả lời của tôi ở đây, tôi phát hiện ra nơi khác trên SO .

Tôi phát hiện ra rằng bạn có thể thêm một mô hình vim hoặc emacs cho mỗi người đọc Linguist vào đầu tệp nguồn của bạn (không may, bắt buộc cho mỗi tệp) để ép buộc tô sáng cú pháp cho Github.com. Dựa trên tệp ngôn ngữ.yml, tôi nghĩ rằng bạn cần thêm /* vim: syntax=C++ */vào tệp nguồn của mình.


0

Bây giờ bạn có thể buộc ngôn ngữ của bất kỳ tệp nào trong kho lưu trữ của mình bằng cách ghi đè ngôn ngữ . Linguist là thư viện mã nguồn mở phát hiện ngôn ngữ của các tệp trên github.com.

Để buộc các .ctệp của bạn được tô sáng bằng ngữ pháp C ++, bạn có thể thêm các mục sau vào .gitattributestệp của mình :

*.c linguist-language=C++

Tôi đã thử điều này *.S linguist-language=asmnhưng không có kết quả ....
mckenzm

@mckenzm Có vẻ như tin nhắn của bạn đã bị cắt ngắn. Các .gitattributesdòng bạn gửi nên buộc Nhà ngôn ngữ học để nhận ra tất cả .Scác file như hội. Nếu nó không hoạt động, tôi có thể xem kho lưu trữ để thử xem điều gì đang xảy ra (bạn có liên kết không?).
pchaigno
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.