es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

Lo que ocurre

Pero me gustaría que la parte @@$ siempre se resaltara como una palabra clave. Aquí hay una muestra (imagen editada) de mi resultado deseado:

Lo que me gustaría

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?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, puedes modificar la gramática de TextMate de la siguiente manera:

    "majsdown_execute_statement": {
        "begin": "(@@\\$)",
        "name": "keyword.majsdown",
        "end": "\\s+",
        "patterns": [
            {
                "include": "source.js"
            }
        ]
    },
    

    Este patrón coincidirá con cualquier texto que comience con @@$ y continúe hasta el primer carácter de espacio en blanco. La propiedad name se establece en keyword.majsdown para asegurarse de que la parte @@$ siempre se resalte como una palabra clave. La propiedad patterns incluye el patrón source.js para resaltar el código JavaScript.

    Con esta modificación, se debería lograr el resultado deseado:

    resultado deseado

Comments are closed.