Kontextdefinierte Snippets

Kontextdefinierte Snippets

r-steinerklärt, wie Sie eine Tastenkombination in einem für die Dokumentklasse spezifischen Kontext (z. B. Beamer oder Artikel) definieren können. Wie können Sie dasselbe für einen Snippet tun?

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>

Antwort1

Sie können keine beliebigen Kontexte für Snippets schreiben, sondern nur Bereiche. Daher können Sie dafür kein Snippet erstellen. Sie können jedoch das Snippet-Verhalten emulieren, indem Sie eine Tastenkombination für die tabTaste erstellen, die nur ausgelöst wird, wenn der Text vor dem Cursor ist test. Diese Tastenkombination sollte das Wort davor entfernen und das Snippet einfügen. Wenn Sie das Paket „Chain Of Command“ installieren, können Sie einfach diese Tastenkombination verwenden:

{
    "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" },
    ]
},

Sie können es anpassen, indem Sie den regulären Ausdruck ändern "operand": "\\btest$",in"operand": "\\byour_trigger$",

verwandte Informationen