Как я могу опустить (или удалить) автоматически совпадающую скобку при запуске пользовательского фрагмента SublimeText?


Я пытаюсь создать фрагмент функции стрелки JavaScript в SublimeText. Он должен быть доступен, когда я набираю открытый paren: (. Я хочу иметь возможность tab, чтобы создать это:

() => {}

С включенным автоматическим соответствием (функция, которая мне нравится, обычно), я не могу понять, как этого избежать:

() => {})

Вот код, который у меня есть до сих пор, который отлично работает, за исключением проблемы автоматического соответствия:

<snippet>
    <content><![CDATA[
(${1}) => {$2}
]]></content>
    <tabTrigger>(</tabTrigger>
    <scope>source.js</scope>
</snippet>
1 2

1 ответ:

Фрагменты могут только вставлять текст или заменять выделенный текст - они не могут изменять текст в другом месте документа, даже рядом с курсором текста. Я думаю, что лучший способ достичь того, что вы хотите, - это использовать привязку ключей, которая будет иметь приоритет над поведением по умолчанию auto_match_enabled (которое также является привязкой ключей), когда ( Нажмите, и получите привязку клавиш для вставки фрагмента, избегая необходимости в отдельном файле .sublime-snippet.

{
    "keys": ["(", "tab"], "command": "insert_snippet", "args": { "contents": "(${1}) => {$2}" }, "context":
    [
        { "key": "selector", "operator": "equal", "operand": "source.js" }
    ]
},

Обратите внимание, что, если вы хотите, чтобы фрагмент все еще отображался в командной палитре опций Snippet: Вы можете сохранить ваш файл .sublime-snippet без каких - либо негативных последствий-привязка клавиш будет иметь приоритет над триггером tab, определенным во фрагменте кода.