gtksourceview3.0에서 Ruby 범위 경계를 구문 강조하려면 어떻게 해야 하나요?

gtksourceview3.0에서 Ruby 범위 경계를 구문 강조하려면 어떻게 해야 하나요?

나는 대부분의 코딩을 정수와 기타 구문을 강조하는 gedit에서 수행합니다. 예 를 들어 Ruby에서 정수 범위를 사용하면 0..3정수가 제대로 강조 표시되지 않고 대신 일반 텍스트 색상이 됩니다. 를 확인해 보았 /usr/share/gtksourceview3.0/language-specs/ruby.lang으나 아쉽게도 솔루션이 예상했던 것보다 훨씬 더 복잡한 것 같습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

글쎄, 지금 당장은 '무차별적인' 해결책만을 제안할 수 있습니다. 이 작업은 정규식을 아는 것에 관한 것입니다.

여기있어.

우선 재정의하는 대신 전체 범위와 일치 decimal하지만 동일한 스타일을 사용하는 새로운 정규식을 정의하기로 결정했습니다. 3단계가 있습니다.

그런데,이것은 가이드입니다gedit의 언어 사양에 대해.

스타일

먼저 스타일을 정의해 보겠습니다.

섹션에서 <styles>앞에 삽입하십시오 decimal.

<style id="range" _name="Range" map-to="def:decimal"/>

어울리는

그런 다음 섹션에 <definitions>다음을 삽입하십시오 decimal.

<context id="range" style-ref="decimal">
  <match>(?&lt;![\w\.])(([1-9](_?[0-9])*|0)\s*\.\.\.?\s*([1-9](_?[0-9])*|0))(?![\w\.])</match>
</context>

이 정규 표현식소수만 범위와 일치(항상 개선의 여지가 있음)

3..7
3...7
3 .. 7
3 ... 7

사용되는 모든 정규식은 PCRE(Perl 호환)입니다. 내 생각에 가장 좋은 방법은 훑어보는 것입니다Perl 정규 표현식 문서. 그래서 당신은 당신 자신을 발명하고 당신이 원하는 무엇이든 일치시킬 수 있습니다.

일치 호출

구문 강조를 강제하려면 다음 표현식을 사용해야 합니다.~ 전에섹션의 십진수 <include>:

<context id="ruby" class="no-spell-check">
  <include>
    ...
    <context ref="range"/>
    <context ref="decimal"/>
    ...
  </include>
</context>

그리고 Gedit를 다시 시작하세요!

관련 정보