2012-10-02 14 views
5

Me gustaría diferenciar entre cadenas de Python y cadenas de línea única en Sublime Text 2. Mirando la definición del lenguaje Python, puedo ver esto, junto con una definición correspondiente para apostrophe-strings que usa el mismo bloque comment.block. nombre de pitón.¿Se puede sublime el color de las cadenas de Python de forma diferente a las cadenas de una sola línea?

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

Pero cuando se crea una nueva regla de color como esto:

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

No pasa nada; permanecen coloreados del mismo modo que las cadenas de una sola línea.

¿Es posible hacer esto? Si es así, ¿qué estoy haciendo mal?

+0

Una gran pregunta. – dbn

Respuesta

3

cambiar Quizás 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> 

Sólo probado brevemente, pero parece que ha funcionado.

+0

Funciona; ¡Gracias! – DNS

0

Creo que Python.tmLanguage tiene un pequeño error. Aquí está la solución para las cadenas de documentación, aunque no estoy seguro si es una agradable:

  • sustituir la clave 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> 
    
  • añadir una sola dict como un primer conjunto de string_quoted_double y string_quoted_single

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

Esto debería hacer de forma automática docstring s se convierten en comentarios.

Cuestiones relacionadas