Resaltado de sintaxis de VSCode/TextMate: coincidir código hasta el final de la línea.
Estoy escribiendo una gramática de TextMate para implementar el resaltado de sintaxis en VSCode para un sabor personalizado de Markdown. Me gustaría resaltar todo en la misma línea después de @@$
como JavaScript.
Esto es lo que se me ocurrió:
"majsdown_execute_statement": {
"begin": "(.*?)(@@\\$)",
"name": "test",
"end": "(\\r\\n|\\r|\\n)",
"beginCaptures": {
"2": {
"name": "keyword.control.majsdown"
}
},
"patterns": [
{
"include": "source.js"
}
]
},
Eso casi funciona:
Pero me gustaría que la parte @@$
siempre se resaltara como una palabra clave. Aquí hay una muestra (imagen editada) de mi resultado deseado:
He probado muchas combinaciones diferentes de "begin"
y "end"
, y también he probado muchos patrones anidados como el siguiente:
"patterns": [
{
"begin": "\\s",
"while": "^(\\r\\n|\\r|\\n)",
"patterns": [
{
"include": "source.js"
}
]
}
]
Desafortunadamente, nada me da el resultado que deseo. ¿Cómo puedo lograr mi resultado deseado?
davy.ai
Para lograr el resultado deseado, puedes modificar la gramática de TextMate de la siguiente manera:
Este patrón coincidirá con cualquier texto que comience con
@@$
y continúe hasta el primer carácter de espacio en blanco. La propiedadname
se establece enkeyword.majsdown
para asegurarse de que la parte@@$
siempre se resalte como una palabra clave. La propiedadpatterns
incluye el patrónsource.js
para resaltar el código JavaScript.Con esta modificación, se debería lograr el resultado deseado: