Sin resaltar el nombre de la función en este caso especial

1

si escribo una función de la siguiente manera:

int foo(int bar)
{}

Sublime destaca foocorrectamente. Sin embargo, en este caso:

int foo
    (int bar)
{}

foo pierde todo el resaltado.

Una de las cosas que amo de C ++ es que no le importa el espacio en blanco. ¿Hay alguna manera de hacer que este código sublime resalte correctamente?

Editar:

Después de obtener algunos punteros y explorar los archivos de sintaxis defualt, esto:

<string>(?x)
(?:  ^                                 # begin-of-line
  |
     (?: (?= \s )           (?&lt;!else|new|return) (?&lt;=\w)      #  or word + space before name
       | (?= \s*[A-Za-z_] ) (?&lt;!&amp;&amp;)       (?&lt;=[*&amp;&gt;])   #  or type modifier before name
     )
)
(\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\s*\()
(
    (?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ |                  # actual name
    (?: (?&lt;=operator) (?: [-*&amp;&lt;&gt;=+!]+ | \(\) | \[\] ) )  # if it is a C++ operator
)
 \s*(?=\()</string>

parece ser la expresión regular que funciona mal. Sin embargo, no puedo entender por qué no está obteniendo mi código; la última línea, \s*(?=\()debería coincidir con cualquier cantidad de espacios en blanco o líneas nuevas antes del paréntesis de apertura, ¿no?

Ludwik
fuente

Respuestas:

1

El resaltado de sintaxis de Sublime Text es totalmente configurable. Puede crear una copia de las reglas predeterminadas de resaltado de sintaxis de C ++, mejorarlas y decirle a ST3 que use su versión mejorada.

ST3 utiliza las reglas de resaltado de sintaxis compatibles con Textmate, que se describen aquí . Si no le gusta trabajar directamente en Plists, puede usar JSON u otros formatos y luego convertirlos automáticamente a Plist con AAAPackageDev (fácilmente instalable con Package Control ).

El paquete predeterminado de C ++ (que incluye reglas de resaltado de sintaxis) se encuentra en C:\Program Files\Sublime Text 3\Packages\C++.sublime-package. Sus paquetes personalizados se pueden colocar en C:\Users\%USERNAME%\AppData\Roaming\Sublime Text 3\Packages\User. La forma más fácil de llegar es a través del menú de ST: Preferencias → Buscar paquetes .

gronostaj
fuente
Gracias, también encontré eso y jugué con él después de leer docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html . Sin embargo, lo que me detuvo fue que el archivo defualt C ++ tmLanguage es una bestia gigante, y realmente no sé cómo abordarlo para obtener el resultado deseado. ¿Podría señalarme en la dirección de lo que debería cambiar allí?
Ludwik
Lo siento, no estoy familiarizado con ese archivo específico también. Puedo darle un consejo: presione Ctrl+Shift+Alt+P(en Windows, otros sistemas operativos usan accesos directos diferentes) con el cursor en el nombre de la función. Los estilos de resaltado utilizados actualmente aparecerán en la barra de estado. Estos se utilizan para establecer colores en las reglas de resaltado de sintaxis, por lo que puede buscarlos en las listas para ubicar las secciones que necesita un poco más rápido.
gronostaj
¡Gracias! Otro lugar sugirió esa cosa, pero dio el atajo Ctrl+Shift+P, que no funcionó para mí. Podría ser capaz de tomarlo de aquí en adelante.
Ludwik