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

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

() => {}

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

() => {})

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

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

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 файл без каких-либо негативных последствий - связывание клавиш будет иметь приоритет над триггером вкладки, определенным во фрагменте.

Другие вопросы по тегам