gedit 구문 강조 파일 수정


9

Gedit에서 강조 표시 파일을 변경하려고합니다. 편집기가 명령문을 주석으로 사용하는 경우를 변경하고 싶기 때문에 /usr/share/gtksourceview-3.0/language-specs/fortran.lang 파일을 수정했습니다. 내가 가진 문제는 새로운 강조 표시 체계를 선택할 때 강조 표시되지 않는 것이 일반 텍스트로 유지된다는 것입니다.

fortran.lang 파일은 su 권한으로 열렸고 모든 것을 새 Gedit 파일에 복사하여 붙여 넣은 후 나중에 동일한 폴더에 fortran_enhanced.lang으로 저장했습니다. 원본 파일을 변경 한 내용은 다음과 같습니다.

원본 fortran.lang 파일 :

<language id="fortran" _name="Fortran 95" version="2.0" _section="Sources">
  <metadata>
    <property name="mimetypes">text/x-fortran</property>
    <property name="globs">*.f;*.f90;*.f95;*.for</property>
    <property name="line-comment-start">!</property>
  </metadata>
  <styles>
    <style id="comment" _name="Comment" map-to="def:comment"/>
    <style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
    <style id="keyword" _name="Keyword" map-to="def:keyword"/>
    <style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
    <style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
    <style id="decimal" _name="Decimal" map-to="def:decimal"/>
    <style id="type" _name="Data Type" map-to="def:type"/>
  </styles>
  <default-regex-options case-sensitive="false"/>
  <definitions>
    <!-- Note: contains an hack to avoid considering ^COMMON a comment -->
    <context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
      <start>!|(^[Cc](\b|[^OoAaYy]))</start>
      <include>
        <context ref="def:escape"/>
        <context ref="def:in-line-comment"/>
      </include>
    </context>
(...)

fortran_enhanced.lang 파일 수정 :

                     <!-- Note: changed language id and name -->
<language id="fortran_enhanced" _name="Fortran 95 2.0" version="2.0" _section="Sources">
  <metadata>
    <property name="mimetypes">text/x-fortran</property>
                     <!-- Note: removed *.f and *.for from file extensions -->
    <property name="globs">*.f90;*.f95;</property>
    <property name="line-comment-start">!</property>
  </metadata>
  <styles>
    <style id="comment" _name="Comment" map-to="def:comment"/>
    <style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
    <style id="keyword" _name="Keyword" map-to="def:keyword"/>
    <style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
    <style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
    <style id="decimal" _name="Decimal" map-to="def:decimal"/>
    <style id="type" _name="Data Type" map-to="def:type"/>
  </styles>
  <default-regex-options case-sensitive="false"/>
  <definitions>
                     <!-- Note: I want comments only beginning with !, not C -->
    <context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
      <start>!</start>
      <include>
        <context ref="def:escape"/>
        <context ref="def:in-line-comment"/>
      </include>
    </context>
(...)

이 질문을 읽었습니다 [ 인형 용 맞춤 gedit 구문 강조 표시? ] 그리고 새 fortran_enhanced.lang 파일을 읽을 수 있도록 만들려고했습니다.

$ cd /usr/share/gtksourceview-3.0/language-specs
$ sudo chmod 0644 fortran_enhanced.lang

그러나 아무런 차이가 없었습니다.

나는 이런 일을 한 번도 해본 적이 없으며 대부분의 언어 파일을 이해하지 못하기 때문에 직감에 의해 순수한 인도를 받았기 때문에 모든 비판에 열려 있습니다.

미리 감사드립니다!


귀하의 게시물 하단에 당신이 말했다 cd /usr/share/gtksourceview-3.0/language-specs. 이것이 실제 명령입니까? 그렇다면 파일을로 이동하면됩니다 /usr/local/share/gtksourceview-3.0/language-specs.
evan.bovie

@ emb1995 제안한대로 gtksourceview-3.0 폴더를 / usr / local / share에 복사했습니다 (폴더가 내 컴퓨터의 / usr / share /에 있기 때문에 복사했다고 말합니다). 어쨌든, 그것은 나를 위해 작동하지 않는 것 같습니다, 나는 gedit에서 새로운 강조 표시 파일을 선택할 때 여전히 일반 텍스트를 얻습니다 :(
Oscar Saleta Reig

답변:


4

나는 당신에게 무엇이 잘못되었는지 알았습니다.

해결책

태그 에서 id(및 _name) 을 변경 한 것이 좋습니다 <language ...>. 결국 그것은 당신이 만드는 새로운 강조 구성표입니다.

그러나이 ID가 사용되는 파일의 다른 위치도 변경해야합니다. 언어 정의 (질문에서 인용 부호로 생략)에서 더 아래로 찾을 수 있습니다.

<context id="fortran" class="no-spell-check">

분명히, 사용 된 모든 컨텍스트 정의를 포함 / 참조하는 언어와 동일한 ID를 가진 컨텍스트가 있어야 특정 스키마를 선택할 때 gedit / GtkSourceView가 사용합니다.

내가 찾은 방법

나는 이것에 대해 전혀 전문가가 아닙니다. 내 모든 자격은 전에 XML 파일을 본 것입니다.) 따라서 "교육받은"추측 만 할 수있었습니다.

터미널 창에서 gedit을 시작할 때 경고 메시지가 표시되었습니다.

(gedit : 6786) : GtkSourceView-WARNING ** : '/usr/local/share/gtksourceview-3.0/language-specs/frtrn.lang'을로드하지 못했습니다 : 주요 언어 정의가 없습니다 (id = "frtrn".)

(I는 "사용 frtrn을 테스트하는 동안 ID, 이름 및 파일 확장자로"당신 "와 같은 경고를 받아야 fortran_enhanced을 ")

이로 인해 파일의 나머지 부분에서 원래 ID를 검색 할만큼 의심스러워졌습니다. 위의 솔루션을 시도한 후 내 설명을 지원하기 위해 다음 줄을 찾았습니다.

[definitions] 여기서 우리는 파일의 시작 부분에 입력하는 기본 컨텍스트를 정의해야합니다. 그렇게하기 위해 요소의 id와 동일한 id를 가진 태그를 사용합니다.

GtkSourceView 문서 의 언어 정의 파일 튜토리얼 에서 가져온 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.