Если вы копируете / вставляете code
в Monaco Editor, он мгновенно форматируется из-за 'formatOnPaste'
. Но если вы используете метод setValue
и сразу после этого вызываете "editor.action.formatDocument"
, ничего не происходит. Мне нужно обернуть его в setTimeout
, что заметно делает ваш код скачком в редакторе ...
Есть предложения? Вы можете скопировать / вставить + нажать кнопку запуска кода ниже в Playround
var value = "function hello() {\nalert('Hello world!');\n}";
var instance = monaco.editor.create(document.getElementById("container"), {
language: "javascript",
formatOnPaste: true,
});
// Setup the listner for the model change
instance.getModel().onDidChangeContent(() => {
// !! Comment out the setTimeout, nothing wil happen..
setTimeout(() => {
instance.getAction("editor.action.formatDocument").run();
// instance.trigger("", 'editor.action.formatDocument');
}, 100);
});
// Change the value...
instance.setValue(value);