2012-10-02 12 views
5

Chciałbym rozróżnić między doctrings Python i jednoliniowych ciągów w Sublime Text 2. Patrząc na definicję języka Python, widzę to, wraz z pasującą definicją dla apostrophe-stringów, które używa tego samego comment.block. nazwa pytona.Czy Sublime kolor doctrings Python inaczej niż jednoliniowe ciągi?

<dict> 
    <key>begin</key> 
    <string>^\s*(?=[uU]?[rR]?""")</string> 
    <key>end</key> 
    <string>(?&lt;=""")</string> 
    <key>name</key> 
    <string>comment.block.python</string> 
... 

Ale gdy tworzę nową regułę kolorów tak:

<dict> 
    <key>name</key> 
    <string>Docstring</string> 
    <key>scope</key> 
    <string>comment.block.python</string> 
    <key>settings</key> 
    <dict> 
     <key>foreground</key> 
     <string>#008800</string> 
    </dict> 
</dict> 

nic się nie dzieje; pozostają kolorowe tak jak ciągi jednoliniowe.

Czy można to zrobić? Jeśli tak, co robię źle?

+0

Świetne pytanie. – dbn

Odpowiedz

3

Może zmieni się na:

<dict> 
    <key>name</key> 
    <string>Docstring</string> 
    <key>scope</key> 
    <string>string.quoted.double.block.python</string> 
    <key>settings</key> 
    <dict> 
     <key>foreground</key> 
     <string>#008800</string> 
    </dict> 
</dict> 

ja tylko testowałem to krótko, ale wydawało się do pracy.

+0

Działa; dzięki! – DNS

0

Myślę, że Python.tmLanguage ma mały błąd. Oto dylemat dla docstrings, choć nie jestem pewien, czy jest to miły jeden:

  • zastąpić klucz docstrings z:

    <key>docstrings</key> 
    <dict> 
        <key>patterns</key> 
        <array> 
         <dict> 
          <key>begin</key> 
          <string>^\s*([uU]?[rR]?""")</string> 
          <key>end</key> 
          <string>(""")</string> 
          <key>name</key> 
          <string>comment.block.python</string> 
         </dict> 
         <dict> 
          <key>begin</key> 
          <string>^\s*(?=[uU]?[rR]?''')</string> 
          <key>end</key> 
          <string>(?&lt;=''')</string> 
          <key>name</key> 
          <string>comment.block.python</string> 
         </dict> 
        </array> 
    </dict> 
    
  • dodać pojedynczy dict jako pierwszej tablicy string_quoted_double i string_quoted_single

    <key>string_quoted_double</key> 
    <dict> 
        <key>patterns</key> 
        <array> 
         <dict> 
          <key>include</key> 
          <string>#docstrings</string> 
         </dict> 
    

To powinno automatycznie dokonać docstring s stają się komentarzami.

Powiązane problemy