EditorConfig¶
Der Modular Text Editor beachtet .editorconfig-
Dateien und übernimmt so automatisch die Konventionen jedes Projekts —
Einrückung, Zeilenenden, Zeichensatz, Leerzeichen am Zeilenende und
abschließender Zeilenumbruch — ganz ohne manuelle Einrichtung. Dies ist eine
eingebaute Funktion des Editors, kein Plugin.
Sie arbeitet still und automatisch: Es gibt keine Menübefehle. Der Editor liest
die für eine Datei geltenden .editorconfig-Dateien beim Öffnen und Speichern.
Wie es funktioniert¶
Beim Öffnen einer Datei wandert der Editor vom Ordner der Datei aufwärts und
sammelt .editorconfig-Dateien, bis er eine mit root = true erreicht (oder
die Laufwerkswurzel). Regeln aus der nächstgelegenen Datei gewinnen, spätere
Abschnitte überschreiben frühere. Die resultierenden Einstellungen werden so
angewendet:
- Beim Öffnen —
indent_style,indent_sizeundtab_widthwerden in das Dokument übernommen, sodass die Tab-Taste, Backspace-Ausrücken und die automatische Einrückung der Konvention des Projekts folgen. Die.editorconfigeines Projekts hat Vorrang vor Ihrer globalen Einrückungseinstellung (siehe Auto-Paare & Einrückung ▸ Vorrang). - Beim Speichern — Leerzeichen am Zeilenende werden entfernt, der abschließende Zeilenumbruch wird ergänzt/entfernt, Zeilenenden werden normalisiert und die Datei wird im gewünschten Zeichensatz geschrieben.
Projekteinstellungen wirken still, bleiben aber übersteuerbar: Sie können die Einrückung jederzeit von Hand ändern, und die ganze Funktion lässt sich abschalten (siehe Einstellungen).
Einstellungen¶
Einstellungen ▸ Allgemein:
- .editorconfig-Einstellungen aus dem Projekt anwenden — schaltet die
gesamte Funktion ein oder aus (standardmäßig ein). Ist sie aus, ignoriert der
Editor
.editorconfigvollständig: Weder die Standardschlüssel noch die unten beschriebenen Plugin-Schlüssel werden angewendet.
Unterstützte Eigenschaften¶
EditorConfig definiert einen kleinen, festen Satz von Eigenschaften. Die Tabelle zeigt jede davon und was der Editor damit tut. Eigenschaftsnamen und die bekannten Werte sind unabhängig von Groß-/Kleinschreibung.
| Eigenschaft | Zulässige Werte | Was der Editor tut |
|---|---|---|
root |
true / false (muss vor dem ersten [Abschnitt] stehen) |
true beendet die Suche bei dieser Datei — sie ist die oberste Konfiguration. |
indent_style |
tab / space |
Wählt Tabs oder Leerzeichen zum Einrücken. |
indent_size |
eine ganze Zahl oder tab |
Legt fest, wie viele Spalten eine Einrückungsstufe hat (tab folgt tab_width). |
tab_width |
eine ganze Zahl | Legt die sichtbare Breite eines Tabs fest; Standard ist indent_size. |
end_of_line |
lf / cr / crlf |
Normalisiert Zeilenenden beim Speichern. |
charset |
latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le |
Schreibt die Datei beim Speichern in dieser Kodierung. |
trim_trailing_whitespace |
true / false |
true entfernt Leerzeichen/Tabs am Ende jeder Zeile beim Speichern. |
insert_final_newline |
true / false |
true stellt genau einen Zeilenumbruch am Dateiende sicher; false entfernt abschließende Zeilenumbrüche. |
max_line_length |
eine ganze Zahl oder off |
Wird erkannt, aber noch nicht angewendet. |
spelling_language |
ein Sprachcode, z. B. en-US |
Wird erkannt, aber noch nicht angewendet. |
beliebige Eigenschaft = unset |
unset |
Löscht einen von einer breiteren Regel gesetzten Wert und stellt den Editor-Standard wieder her. |
Zwei Eigenschaften werden gelesen, aber noch nicht umgesetzt
max_line_length und spelling_language gehören zum
EditorConfig-Standard, werden aber nicht von allen Editoren unterstützt.
Der Editor parst sie (sie verursachen also keine Fehler), setzt sie aber
noch nicht um.
Dateizuordnung (Globs)¶
Jede [Abschnitts]-Überschrift ist ein Glob, das gegen den Dateipfad relativ
zum Ordner der .editorconfig geprüft wird:
| Muster | Trifft auf |
|---|---|
* |
beliebige Zeichen außer dem Pfadtrenner (/) |
** |
beliebige Zeichen einschließlich / (über Ordner hinweg) |
? |
genau ein Zeichen außer / |
{a,b,c} |
eine der kommagetrennten Zeichenketten |
{1..9} |
eine ganze Zahl im Bereich |
[abc] |
ein einzelnes Zeichen aus der Menge |
[!abc] |
ein einzelnes Zeichen nicht aus der Menge |
name |
ein Muster ohne / trifft in jedem Unterordner |
/name |
ein führendes / verankert den Treffer im Ordner der Konfigurationsdatei |
Plugin-eigene Einstellungen¶
Neben den Standardschlüsseln kann .editorconfig auch Plugin-eigene
Konfiguration transportieren. Ein Plugin liest seine Einstellungen im
Namensraum mte.<plugin-id>.<schlüssel>, und ein Projektwert übersteuert die
globale Benutzereinstellung (aus den Einstellungen) für Dateien dieses
Projekts. Das unterliegt demselben Schalter .editorconfig-Einstellungen
anwenden — ist er aus, werden auch diese Schlüssel ignoriert.
Verfügbare Plugin-Schlüssel¶
Dies ist die vollständige Liste der Plugin-Einstellungen, die der Editor
heute aus .editorconfig übernimmt. Sie wächst nur, wenn ein Plugin sich
ausdrücklich dafür entscheidet; jeder nicht gelistete Schlüssel (auch für
Plugins, die .editorconfig nicht lesen) wird geparst, bleibt aber wirkungslos.
| Schlüssel | Typ | Standard | Wirkung |
|---|---|---|---|
mte.org.mte.url.enabled |
true / false |
der globale Schalter der URL-Hervorhebung (Einstellungen) | Aktiviert oder deaktiviert URL-Erkennung und -Hervorhebung für Dateien dieses Projekts. |
Beispiel — URL-Hervorhebung für ein Projekt abschalten, unabhängig vom globalen Schalter:
Warum so wenige?
Plugin-Schlüssel sind bewusst auf echte Projektkonventionen beschränkt
(Einstellungen, die ein Team committen und teilen würde). Die meisten
Plugin-Einstellungen — Suchverlauf, Autospeicher-Intervalle, der zuletzt
geöffnete Ordner, OS-Dateizuordnungen — sind persönlicher oder
Maschinenzustand und gehören bewusst nicht in eine geteilte
.editorconfig. Die klassische Projektkonvention, die Einrückung, decken
die Standardschlüssel oben ab. Weitere Plugin-Schlüssel können hier
erscheinen, wenn Plugins die Funktion übernehmen.
Beispiel¶
Eine .editorconfig in der Projektwurzel, die jede Eigenschaft und Glob-Form
verwendet:
# Top-most config in the project: stop searching parent directories.
root = true
# Defaults for every file in this tree.
[*]
indent_style = space
indent_size = 4
tab_width = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# max_line_length and spelling_language are recognised but not yet applied.
max_line_length = 100
spelling_language = en-US
# Makefiles must use real tabs.
[Makefile]
indent_style = tab
# 2-space indent for web/markup/data files (brace alternation).
[*.{js,ts,json,yml,yaml,html,css}]
indent_size = 2
# Markdown keeps trailing whitespace (two spaces = a hard line break).
[*.md]
trim_trailing_whitespace = false
# Windows batch files want CRLF and a legacy code page.
[*.{bat,cmd}]
end_of_line = crlf
charset = latin1
# '**' spans folders; '?' matches one character.
[docs/**.txt]
indent_size = 2
[log/file?.log]
indent_size = 8
# Integer-range and character-class globs.
[page{1..9}.txt]
indent_size = 1
[[Mm]akefile.inc]
indent_style = tab
# A leading '/' anchors to this file's folder only.
[/CHANGELOG.md]
max_line_length = off
# 'unset' clears a value set by a broader rule.
[lib/legacy/*]
indent_style = unset
indent_size = unset
# A plugin's own setting (URL Highlighter), overriding the global toggle here.
mte.org.mte.url.enabled = false
Kommentare müssen in einer eigenen Zeile stehen
EditorConfig kennt keine Inline-Kommentare. Ein # oder ; beginnt
einen Kommentar nur am Zeilenanfang. indent_size = 4 # four ergibt den
Wert 4 # four, der ungültig ist und stillschweigend ignoriert wird —
setzen Sie den Kommentar stattdessen in die Zeile darüber. (So verhält
sich jeder andere EditorConfig-fähige Editor.)