소스 파일에서 GitHub 구문 강조 언어 강제 적용


16

확장명이 .C 이고 C 구문 강조 표시를 사용 하는 GitHub 저장소에 C ++ 소스 파일 이 있습니다.

이러한 파일에 C ++ 구문 강조를 적용하도록 GitHub를 설정하려면 어떻게해야합니까?

GitHub가 구문 강조를 목적으로 소스 언어를 식별하는 방법이 있습니까?

파일 확장자 만 사용하는 것처럼 보이지만 특정 언어를 강제로 적용 할 수 있습니까?

답변:


9

나는 support@github.com에 물었다; 이것은 그들의 대답입니다.

Pygments (http://pygments.org/)를 사용하여 구문 강조를 수행하고 각 파일 확장자에 따라 사용할 어휘 분석기를 결정합니다. 불행히도 * .c-> * .cpp 및 * .h-> * .hpp에서 파일 이름을 바꾸지 않고 C ++ 강조 표시를 얻는 방법이없는 것처럼 보입니다.

git mv명령 을 사용하여 파일의 자식 기록을 잃지 않고이 작업을 수행 할 수 있습니다 .


7

GitHub의 언어 탐지 는 편리한 오픈 소스 인 Linguist 모듈에 의해 수행됩니다 . 모호한 파일 (예 : .h파일) 을 감지하는 데 약간 영리 할 수 ​​있지만 주로 언어를 감지하기 위해 파일 확장자를 사용 합니다. 당신은에서 볼 수 있듯이 구성 파일 , .c단단히 C 파일로 정의된다. GitHub에서 평가해야하는 파일의 수를 감안할 때 약간의 정확성이 요구되는 경우 효율성이 핵심 요구 사항입니다.

리포지토리 별 구성이 개발자에 의해 배제 된 것처럼 보이 므로 C ++에서 C ++ 확장명을 사용하는 것만으로 파일 구문을 강조 표시 할 수있는 유일한 방법입니다. 이러한 확장을 유지하고 강조 표시하려면 다른 서비스를 시도하거나 자신이있는 곳에서 코드를 호스팅해야 할 수도 있습니다.

2014 년 10 월 업데이트 : GitHub는 여전히 서 있지 않았습니다. 작년 에는 파일의 언어를 결정하는 데 도움이되는 몇 가지 기본 휴리스틱 을 도입했습니다 . 이 질문에 더 구체적으로, .c파일이 C, C ++ 또는 Objective-C인지 확인합니다.

GitHub 지원의 답변 은 약간 흥미 롭습니다. 피그먼트를 강조 표시하고 어휘 분석기를 사용하지만 규칙 세트는 자체 언어 학자 모듈에 있습니다. 그들이 알기를 바랐습니다!


3

A의 파일의 오두막 의 오두막은 언어를 결정하지만, 균등 다른에 대해 가중 될 것으로 보인다 때 고려되는 토큰 . Shebang이 파일의 언어를 결정적으로 정의해야하기 때문에 이것은 큰 오류 인 것 같습니다. 강조 표시에 문제 가 발생할 수 있습니다 .

해결 방법으로 올바른 언어를 위해 "스케일을 기울이기"위해 주석 형태의 더미 토큰을 추가 할 수 있습니다. 이것은 실험적이지만 나는 좋았습니다 .



0

이제 언어 학자 재정의를 사용하여 리포지토리에있는 파일의 언어를 강제로 지정할 수 있습니다 . 언어학 자는 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.