2016-12-12 4 views
3

Ich möchte setzen Sie die Einrückungsbreite (in Leerzeichen) in einer Instanz der monaco editor.Wie kann ich die Tabbreite in einer Monaco-Editor-Instanz einstellen?

Bis jetzt war ich in der Lage, viele Optionen anzupassen, indem Sie einen der IEditorOptions während der Initialisierung übergeben. Diese Optionen können auch später angepasst werden unter Verwendung der updateOptions Methode auf einer Editor-Instanz, wie sichtbar in folgendem Beispiel:

// Many settings can be applied at initialization 
var editor = monaco.editor.create(
    document.getElementById("editor"), { 
    language: "html", 
    value: "<p>Hello World!</p>", 
}); 

// ... they can also be changed later ... 
editor.updateOptions({ 
    lineNumbers: true, 
}) 

// ... however, tabSize is not among the settings that can be modified -- 
// the following has no effect: 
editor.updateOptions({ 
    tabSize: 2, 
}) 

jedoch die tabSize Einstellung ist nicht in dieser Schnittstelle definiert, sondern ein separater FormattingOptions Schnittstelle , für die ich keine Bindung finden konnte (eine Codesuche findet only the interface definition).

Können Sie mir helfen, diese Einstellung anzupassen? Meine Vermutung ist, dass ich die (ansonsten exzellente) Editor-Dokumentation falsch verstehe, daher wäre jede Hilfe bei der Navigation sehr hilfreich.

Wie immer werden alle Ideen und Hinweise sehr geschätzt. Vielen Dank für die Berücksichtigung dieser Frage!

Antwort

3

Die Antwort hat nur wurde in einer entsprechenden GitHub issue diskutiert. Der Trick besteht nicht darin, die Optionen im Editor direkt zu aktualisieren, sondern im zugrunde liegenden Modell. die oben zu erweitern snipped:

const editor = monaco.editor.create(
    document.getElementById("editor"), { 
    language: "html", 
    value: "<p>Hello World!</p>", 
}); 

editor.getModel().updateOptions({ tabSize: 2 }) 

Dies funktioniert für mich (™) in der Monaco Playground.

Der ganze Verdienst geht an die Monaco-Entwickler — Ich liebe ihren Editor, und dies verbessert es noch weiter.

3

Ich habe, um herauszufinden, nicht in der Lage gewesen, wie eine globale tabSize Option setzen entweder jedoch habe ich es schaffte die Möglichkeit, speziell für HTML zu setzen:

editor.languages.html.htmlDefaults.setOptions({ tabSize: 2 });

Verwandte Themen