Fragmentos definidos por el contexto

Fragmentos definidos por el contexto

r-steinExplicó cómo se puede definir una combinación de teclas en términos de un contexto específico de la clase de documento (por ejemplo, proyector o artículo). ¿Cómo podrías hacer lo mismo con un fragmento?

MWE:

<snippet>
    <content><![CDATA[
\alert{$1} $0
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>test</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>latextools.documentclass.article</scope>
</snippet>

Respuesta1

No puede escribir contextos arbitrarios para fragmentos, sino solo ámbitos. Por lo tanto, no puedes crear un fragmento para eso. Sin embargo, puede emular el comportamiento del fragmento creando una combinación de teclas para la tabclave, que solo se activa si el texto antes del cursor es test. Esta combinación de teclas debería eliminar la palabra anterior e insertar el fragmento. Si instala el paquete "Cadena de mando", puede utilizar esta combinación de teclas:

{
    "keys": ["tab"],
    "command": "chain",
    "args": {"commands": [
        ["delete_word", {"forward": false}],
        ["insert_snippet", {"contents": "\\alert{$1} "}],
    ]},
    "context":
    [
        { "key": "selector", "operand": "text.tex.latex" },
        { "key": "preceding_text", "operator": "regex_contains", "operand": "\\btest$", "match_all": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        { "key": "latextools.documentclass", "operand": "article" },
    ]
},

Puedes adaptarlo cambiando la expresión regular "operand": "\\btest$",a"operand": "\\byour_trigger$",

información relacionada