Как отформатировать код сразу после вызова `setValue ()` в редакторе Monaco? - PullRequest
1 голос
/ 20 января 2020

Если вы копируете / вставляете 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);
...