2012-10-02 14 views
5

Mi piacerebbe distinguere tra le stringhe Python e le stringhe single-line in Sublime Text 2. Guardando la definizione del linguaggio Python, posso vedere questo, insieme a una definizione corrispondente per le stringhe apostrofo che utilizza lo stesso commento.blocco. nome python.È possibile sublimare le stringhe di Python in colori diversi da stringhe a linea singola?

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

Ma quando creo una nuova regola di colore in questo modo:

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

Non succede nulla; rimangono colorati allo stesso modo delle stringhe su una sola riga.

È possibile farlo? In tal caso, cosa sto sbagliando?

+0

Ottima domanda. – dbn

risposta

3

forse cambiare a:

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

Ho solo provato brevemente, ma è sembrato funzionare.

+0

Funziona; Grazie! – DNS

0

Penso che Python.tmLanguage abbia un piccolo bug in esso. Ecco la correzione per docstrings, anche se io non sono sicuro se è una bella:

  • sostituire la chiave docstrings con:

    <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> 
    
  • aggiungere un singolo dict come una prima serie di string_quoted_double e string_quoted_single

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

Questo dovrebbe rendere automaticamente docstring s diventano commenti.

Problemi correlati