Программирование плагина VSCODE: Как объединить несколько команд в истории команд, чтобы выполнить одно действие отмены / повтора?

#visual-studio-code #vscode-extensions

#visual-studio-code #vscode-расширения

Вопрос:

Я пишу плагин vscode для одновременного закомментирования и дублирования строки. Ключевая последовательность действий в плагине (по модулю нескольких выборок и т. Д.) Следующая:

 vscode.commands.executeCommand("editor.action.commentLine");
vscode.commands.executeCommand("editor.action.copyLinesDownAction");
vscode.commands.executeCommand("editor.action.commentLine");
 

Так что это нормально, и это работает. Единственная проблема: история отмены / повтора рассматривает все эти команды как отдельные операции… итак, я делаю все это одним нажатием клавиши, но если я хочу отменить, мне нужно нажать Cmd Z 3 раза, что сбивает с толку.

Как я инструктирую VSCode обрабатывать последовательность команд как единый «блок» в истории отмены / повтора?

Комментарии:

1.при использовании a TextEditorEdit editor.edit() вы можете пометить операцию, чтобы сохранить точку отмены. Запрограммируйте действие самостоятельно и установите только один вызов с точкой отмены

2. @rioV8 Вы хотите сказать, что мне нужно заменить вызовы на executeCommand мои собственные реализации? Не могли бы вы привести пример?

3. если вы сами пишете эту модификацию, вам нужен только один editor.edit() вызов

4. Хорошо, я понятия не имею, как я мог бы реализовать что-то столь сложное editor.action.commentLine , поэтому, если вы предлагаете мне повторно реализовать это самостоятельно, я думаю, я ухожу…