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를 다시 시작하세요!

관련 정보