3

ユーザー定義関数の色が異なるように、geditスタイルを微調整しようとしています。

http://library.gnome.org/devel/gtksourceview-2.0/stable/lang-reference.htmlを検索しましたが、何も見つかりませんでした。

私はそれをするかもしれないと思っ<style name="def:function" />たが、それはgeditには効果がないようだ。

<?xml version="1.0" ?>
<style-scheme id="wombat" name="Wombat" version="1.0">
        <author/>
        <_description>Wombat theme</_description>
        <style background="#2d2d2d" name="current-line"/>
        <style background="#857b6f" bold="true" foreground="#fff000" name="bracket-match"/>
        <style background="#242424" bold="true" foreground="#fff000" name="search-match"/>
        <style background="#656565" name="cursor"/>
        <style background="#242424" foreground="#f6f3e8" name="text"/>
        <style background="#272727" foreground="#857b6f" name="line-numbers"/>
        <style foreground="#363636" italic="true" name="def:comment"/>
        <style foreground="#e5786d" name="def:constant"/>
        <style foreground="#95e454" italic="true" name="def:string"/>
        <style foreground="#cae682" name="def:identifier"/>
        <style foreground="#000000" name="def:function"/>
        <style foreground="#cae682" name="def:type"/>
        <style foreground="#8ac6f2" name="def:statement"/>
        <style foreground="#8ac6f2" name="def:keyword"/>
        <style foreground="#e5786d" name="def:preprocessor"/>
        <style foreground="#e5786d" name="def:number"/>
        <style foreground="#e7f6da" name="def:specials"/>
    </style-scheme>

ヒントはありますか?ありがとう!

4

2 に答える 2

1

新しいセクションを追加するには、言語定義ファイルを編集する必要があります。言語の定義はpython.langであり、私にとってはにあり/usr/share/gtksourceview-2.0/language-specsます。

まず、作成するスタイルIDのスタイルを追加する必要があります。

<style id="class-name"    _name="Python Class Name"  map-to="def:type"/>

次に、このファイルの<context-id="python"セクションの下に新しいコンテキストを追加する必要があります。

<context id="class-name" style-ref="class-name" style-inside="true">
    <start>\%{string-prefix}def\ </start>
    <end>\(</end>
    <include>
        <context ref="python"/>
        <context ref="format"/>
        <context ref="escaped-char"/>
    </include>
</context>

あなたは、または私たちが一致style-inside="true"するものにスタイリングを適用しないようにする必要があります。ドキュメントから:def(

style-inside(オプション)この属性が「true」の場合、強調表示スタイルは開始一致と終了一致の間の領域に適用されます。それ以外の場合は、コンテキスト全体が強調表示されます。

それを保存してからgeditを再起動すると、関数名はエラーと同じスタイルになります。たとえば、のテキストは次のAttributeErrorようになります。map-to言語ファイルの先頭の行を変更して、関数名に適用されるスタイルを変更できます。

クラス名に新しいスタイルを定義するのではなく、既存のスタイルを再利用する利点は、将来インストールするすべてのgeditテーマで機能することです。Python固有の関数名セクションを追加するためにスタイルを変更する必要はありません。


編集:コメントに記載されているように、これは「def」のスタイリングを無効にします。「class-name」セクション(上記の私のコード)を既存の「keywords」セクションの下に移動すると、変更が階層の下位に移動するため、これが修正されます。機会があれば画像を更新します。

前: ここに画像の説明を入力してください

後: ここに画像の説明を入力してください

于 2012-05-30T01:26:47.873 に答える
0

私があなたを正しく理解しているなら、まず最初にあなたはあなたの*.langファイルで新しいスタイルを定義する必要があります

<style id="function" _name="Functions"/>

次に、次のような必要なすべての機能のリストを作成します

<context id="functions" style-ref="function">
    <keyword>abs</keyword>
    <keyword>acos</keyword>
    <keyword>acosh</keyword>
</context>

次に、ファイルの最後にあるブロック定義を更新し、新しいコンテキストを追加します

<context ref="functions"/>

その非常に重要な正しい順序、コンテキスト定義の順序はすべてのファイルで同じである必要があります。1つの要素は常に次々に移動し、それらを混同しないでください。

最後に、styles / *。xmlファイルでスタイルフォームマットを定義する必要があります。私の場合は、

<style name="php:function" foreground="#0000ee" bold="false"/>

phpを使用した場所は、*。langファイルと同じように言語IDである必要があります。

于 2011-03-10T13:09:29.773 に答える