Как программно запускать события клавиатуры в Monaco Editor
При написании генеративного набора тестов для редакторов кода я пытаюсь программно вызвать обработчики событий, которые обрабатывают KeyboardEvent
в Монако. Создание new KeyboardEvent({...})
и отправка его в текстовое поле или корневой редактор не работала.
Например, как мы можем перевести редактор в следующие состояния:
- Вставить "abc" =>
abc|
- Переместить курсор на -1 =>
ab|c
- Удалить один раз =>
a|c
- Тип "х" =>
ax|c
2 ответа
Пытаться
editor.trigger(monaco.KeyMod.CtrlCmd + monaco.KeyCode.KEY_P, 'type', { text: 'some text' });
получите список всех поддерживаемых действий, используя этот код:
editor.getSupportedActions().forEach((value) => {
console.log(value);
});
в редакторе Monaco есть пример триггерной функции, которая может вам подойти:
editor.trigger('keyboard', 'type', {text: 'abc'})
editor.trigger('keyboard', 'deleteLeft', null);
editor.trigger('keyboard', 'deleteRight', null);
editor.trigger('keyboard', 'selectAll', null);
editor.trigger('keyboard', 'tab', null);
editor.trigger('keyboard', 'deleteLeft', null)
editor.trigger('keyboard', 'cursorEnd', null)
editor.trigger('keyboard', 'cursorHome', null)
editor.trigger('keyboard', 'cursorTop', null)
editor.trigger('keyboard', 'cursorBottom', null)
editor.trigger('keyboard', 'undo', null)
editor.trigger('keyboard', 'redo', null)
editor.trigger('source', 'editor.action.formatDocument', null)
editor.trigger('editor', 'gotoLine', {lineNumber: 10, column: 5})