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">

どうやら、特定のスキームが選択されたときにgedit / GtkSourceViewがそれを使用できるように、使用されているすべてのコンテキスト定義を含む/参照する言語と同じIDのコンテキストが必要です。

どうやって見つけたの

私はこれの専門家ではありません。私の資格はすべて、以前にXMLファイルを見たことがあるということです;)したがって、「教育された」推測しかできませんでした。

端末ウィンドウからgeditを起動すると警告が表示された

(gedit:6786):GtkSourceView-WARNING **: '/usr/local/share/gtksourceview-3.0/language-specs/frtrn.lang'のロードに失敗しました:メイン言語定義がありません(id = "frtrn"。)

(私は「使用frtrnをテストしている間、あなたは」と同じ警告を取得する必要のID、名前およびファイル拡張子として「fortran_enhancedを」)

これは、ファイルの残りの部分で元のIDを検索するのに十分疑わしくなりました。上記の解決策を試した後、私は私の説明をサポートする次の行も見つけました:

[定義]ここでは、ファイルの先頭から入力するメインコンテキストを定義する必要があります。これを行うには、要素のIDと等しいIDを使用してタグを使用します[...]

これは、GtkSourceViewドキュメントの言語定義ファイルのチュートリアルからです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.