Gå till innehållet

EditorConfig

Modular Text Editor respekterar .editorconfig-filer, så att redigeraren automatiskt rättar sig efter varje projekts konventioner — indrag, radslut, teckenuppsättning, efterföljande blanksteg och avslutande nyrad — utan någon manuell inställning. Detta är en inbyggd funktion i redigeraren, inte en insticksmodul.

Den är tyst och automatisk: det finns inga menykommandon. Redigeraren läser de .editorconfig-filer som gäller för en fil när du öppnar och sparar den.

Hur det fungerar

När du öppnar en fil vandrar redigeraren uppåt från filens mapp och samlar .editorconfig-filer tills den når en som är märkt root = true (eller enhetsroten). Regler från den närmaste filen vinner, och senare avsnitt åsidosätter tidigare. De resulterande inställningarna tillämpas så här:

  • Vid öppnande — indent_style, indent_size och tab_width skjuts in i dokumentet så att Tab-tangenten, utdrag med backsteg och automatiskt indrag alla följer projektets konvention. Ett projekts .editorconfig har företräde framför din globala indragsinställning (se Automatiska par och indrag ▸ företräde).
  • Vid sparande — efterföljande blanksteg trimmas, den avslutande nyraden läggs till eller tas bort, radslut normaliseras, och filen skrivs i den begärda teckenuppsättningen.

Projektinställningar gäller tyst men förblir åsidosättbara: du kan alltid ändra indraget för hand, och hela funktionen kan stängas av (se Inställningar).

Inställningar

Inställningar ▸ Allmänt:

  • Tillämpa .editorconfig-inställningar från projektet — slå på eller av hela funktionen (på som standard). När den är av ignorerar redigeraren .editorconfig fullständigt: den tillämpar varken standardnycklarna eller tillgängliggör nycklarna per insticksmodul som beskrivs nedan.

Egenskaper som stöds

EditorConfig definierar en liten, fast uppsättning egenskaper. Tabellen visar dem alla och vad redigeraren gör med dem. Egenskapsnamn och de kända värdena är oberoende av skiftläge.

Egenskap Godtagna värden Vad redigeraren gör
root true / false (måste stå före det första [avsnittet]) true avbryter sökningen vid den här filen — den är den översta konfigurationen.
indent_style tab / space Väljer tabbar eller blanksteg för indrag.
indent_size ett heltal, eller tab Anger hur många kolumner en indragsnivå är (tab följer tab_width).
tab_width ett heltal Anger en tabbs visuella bredd; är som standard indent_size.
end_of_line lf / cr / crlf Normaliserar radslut vid sparande.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Skriver filen i den här teckenkodningen vid sparande.
trim_trailing_whitespace true / false true tar bort mellanslag och tabbar i slutet av varje rad vid sparande.
insert_final_newline true / false true ser till att filen slutar med exakt en nyrad; false tar bort avslutande nyrader.
max_line_length ett heltal, eller off Känns igen men tillämpas ännu inte.
spelling_language en språkkod, t.ex. en-US Känns igen men tillämpas ännu inte.
valfri egenskap = unset unset Tömmer ett värde som satts av en bredare regel och återställer redigerarens egen standard.

Två egenskaper läses men följs ännu inte

max_line_length och spelling_language ingår i EditorConfig-standarden men stöds inte av alla redigerare. Redigeraren tolkar dem (så att de inte orsakar fel) men agerar ännu inte på dem.

end_of_line avgör också vad Enter infogar

Ett dokument behåller normalt de radslut dess fil redan hade, och Enter infogar dem. När en end_of_line gäller normaliserar sparandet bufferten och flyttar dokumentet till den konventionen, så att nästa Enter matchar det som just skrevs till disken. Statusradens radslutssegment följer med.

En byteordningsmarkering i självaste .editorconfig ignoreras

En .editorconfig som sparats av en Windows-redigerare börjar ofta med en UTF-8-byteordningsmarkering. Redigeraren skalar bort den före tolkningen, så att filens första egenskap — oftast root = true — läses normalt.

Filmatchning (globmönster)

Varje [avsnitts]-rubrik är ett globmönster som matchas mot filsökvägen, relativt den mapp som innehåller .editorconfig:

Mönster Matchar
* vilka tecken som helst utom en sökvägsavskiljare (/)
** vilka tecken som helst, inklusive / (spänner över mappar)
? exakt ett tecken utom /
{a,b,c} vilken som helst av de kommaseparerade strängarna
{1..9} vilket heltal som helst i intervallet
[abc] vilket enskilt tecken som helst i mängden
[!abc] vilket enskilt tecken som helst som inte är i mängden
name ett mönster utan / matchar i vilken undermapp som helst
/name ett inledande / förankrar matchningen till konfigurationsfilens mapp

Inställningar per insticksmodul

Utöver standardnycklarna kan .editorconfig också bära konfiguration per insticksmodul. En insticksmodul läser sina egna inställningar under namnrymden mte.<plugin-id>.<key>, och ett projektvärde åsidosätter användarens globala inställning (satt i Inställningar) för filer i det projektet. Detta styrs av samma växel Tillämpa .editorconfig-inställningar ovan — stäng av den så ignoreras även dessa nycklar.

Tillgängliga nycklar för insticksmoduler

Detta är den fullständiga listan över inställningar för insticksmoduler som redigeraren i dag respekterar från .editorconfig. Den växer bara i takt med att en insticksmodul uttryckligen ansluter sig; varje nyckel som inte står här (inklusive de för insticksmoduler som inte läser .editorconfig) tolkas men har ingen effekt.

Nyckel Typ Standard Effekt
mte.org.mte.url.enabled true / false den globala växeln för URL-markering (Inställningar) Aktivera eller inaktivera identifiering och färgmarkering av URL:er för filer i det här projektet.

Exempel — stäng av URL-markeringen för ett projekt, oavsett den globala växeln:

[*]
mte.org.mte.url.enabled = false

Varför så få?

Nycklar per insticksmodul är medvetet begränsade till genuina projektkonventioner (inställningar ett team skulle checka in och dela). De flesta inställningar för insticksmoduler — sökhistorik, intervall för automatiskt sparande, den senast öppnade mappen, operativsystemets filkopplingar — är personligt eller maskinbundet tillstånd och hör med avsikt inte hemma i en delad .editorconfig. Den klassiska projektkonventionen, indraget, täcks av standardnycklarna ovan. Fler nycklar för insticksmoduler kan dyka upp här i takt med att insticksmoduler tar upp funktionen.

Exempel

En .editorconfig placerad i ett projekts rot, som använder varje egenskap och varje globform:

# 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

Kommentarer måste stå på egen rad

EditorConfig har inga kommentarer inuti en rad. Ett # eller ; inleder en kommentar endast i början av en rad. Att skriva indent_size = 4 # four gör värdet 4 # four, vilket är ogiltigt och tyst ignoreras — sätt i stället kommentaren på raden ovanför. (Detta stämmer med varje annan redigerare som känner EditorConfig.)