Gå til indholdet

EditorConfig

Modular Text Editor respekterer .editorconfig-filer, så editoren automatisk retter sig efter hvert projekts konventioner — indrykning, linjeskift, tegnsæt, efterfølgende blanktegn og afsluttende linjeskift — uden nogen manuel opsætning. Dette er en indbygget funktion i editoren, ikke et udvidelsesmodul.

Den er stille og automatisk: der er ingen menukommandoer. Editoren læser de .editorconfig-filer, der gælder for en fil, når du åbner og gemmer den.

Sådan virker det

Når du åbner en fil, vandrer editoren opad fra filens mappe og samler .editorconfig-filer, indtil den når en, der er mærket root = true (eller drevroden). Regler fra den nærmeste fil vinder, og senere afsnit tilsidesætter tidligere. De resulterende indstillinger anvendes sådan:

  • Ved åbning — indent_style, indent_size og tab_width skubbes ind i dokumentet, så Tab-tasten, udrykning med backspace og automatisk indrykning alle følger projektets konvention. Et projekts .editorconfig har forrang frem for din globale indrykningsindstilling (se Automatiske par og indrykning ▸ forrang).
  • Ved gemning — efterfølgende blanktegn trimmes, det afsluttende linjeskift tilføjes eller fjernes, linjeskift normaliseres, og filen skrives i det ønskede tegnsæt.

Projektindstillinger gælder stille, men forbliver mulige at tilsidesætte: du kan altid ændre indrykningen manuelt, og hele funktionen kan slås fra (se Indstillinger).

Indstillinger

Indstillinger ▸ Generelt:

  • Anvend .editorconfig-indstillinger fra projektet — slå hele funktionen til eller fra (slået til som standard). Når den er slået fra, ignorerer editoren .editorconfig fuldstændigt: den anvender hverken standardnøglerne eller stiller nøglerne pr. udvidelsesmodul til rådighed, som beskrives nedenfor.

Understøttede egenskaber

EditorConfig definerer et lille, fast sæt egenskaber. Tabellen viser dem alle, og hvad editoren gør med dem. Egenskabsnavne og de kendte værdier er uafhængige af store og små bogstaver.

Egenskab Accepterede værdier Hvad editoren gør
root true / false (skal stå før det første [afsnit]) true standser søgningen ved denne fil — den er den øverste konfiguration.
indent_style tab / space Vælger tabulatorer eller mellemrum til indrykning.
indent_size et helt tal, eller tab Angiver hvor mange kolonner ét indrykningsniveau er (tab følger tab_width).
tab_width et helt tal Angiver en tabulators synlige bredde; er som standard indent_size.
end_of_line lf / cr / crlf Normaliserer linjeskift ved gemning.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Skriver filen i denne tegnkodning ved gemning.
trim_trailing_whitespace true / false true fjerner mellemrum og tabulatorer i slutningen af hver linje ved gemning.
insert_final_newline true / false true sikrer, at filen slutter med præcis ét linjeskift; false fjerner afsluttende linjeskift.
max_line_length et helt tal, eller off Genkendes, men anvendes endnu ikke.
spelling_language en sprogkode, f.eks. en-US Genkendes, men anvendes endnu ikke.
enhver egenskab = unset unset Rydder en værdi sat af en bredere regel og genskaber editorens egen standard.

To egenskaber læses, men følges endnu ikke

max_line_length og spelling_language er en del af EditorConfig-standarden, men understøttes ikke af alle editorer. Editoren fortolker dem (så de ikke forårsager fejl), men handler endnu ikke på dem.

end_of_line afgør også, hvad Enter indsætter

Et dokument beholder normalt de linjeskift, dets fil allerede havde, og Enter indsætter dem. Når en end_of_line gælder, normaliserer gemningen bufferen og flytter dokumentet til den konvention, så det allernæste Enter passer til det, der lige er skrevet til disken. Statuslinjens linjeskiftssegment følger med.

Et byteordensmærke i selve .editorconfig ignoreres

En .editorconfig gemt af en Windows-editor begynder ofte med et UTF-8-byteordensmærke. Editoren skræller det af før fortolkningen, så filens første egenskab — som regel root = true — læses normalt.

Filmatchning (globmønstre)

Hver [afsnits]-overskrift er et globmønster, der matches mod filstien, i forhold til den mappe, der indeholder .editorconfig:

Mønster Matcher
* vilkårlige tegn undtagen et stiskilletegn (/)
** vilkårlige tegn, inklusive / (spænder over mapper)
? præcis ét tegn undtagen /
{a,b,c} en af de kommaadskilte strenge
{1..9} ethvert helt tal i intervallet
[abc] ethvert enkelt tegn i mængden
[!abc] ethvert enkelt tegn, der ikke er i mængden
name et mønster uden / matcher i enhver undermappe
/name et indledende / forankrer matchet til konfigurationsfilens mappe

Indstillinger pr. udvidelsesmodul

Ud over standardnøglerne kan .editorconfig også bære konfiguration pr. udvidelsesmodul. Et udvidelsesmodul læser sine egne indstillinger under navnerummet mte.<plugin-id>.<key>, og en projektværdi tilsidesætter brugerens globale indstilling (sat i Indstillinger) for filer i det projekt. Dette styres af samme kontakt Anvend .editorconfig-indstillinger ovenfor — slå den fra, så ignoreres også disse nøgler.

Tilgængelige nøgler til udvidelsesmoduler

Dette er den fulde liste over udvidelsesmodulindstillinger, som editoren i dag respekterer fra .editorconfig. Den vokser kun, i takt med at et udvidelsesmodul udtrykkeligt tilslutter sig; enhver nøgle, der ikke står her (herunder dem til udvidelsesmoduler, der ikke læser .editorconfig), fortolkes, men har ingen virkning.

Nøgle Type Standard Virkning
mte.org.mte.url.enabled true / false den globale kontakt for URL-fremhævning (Indstillinger) Slå genkendelse og fremhævning af URL'er til eller fra for filer i dette projekt.

Eksempel — slå URL-fremhævningen fra for ét projekt, uanset den globale kontakt:

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

Hvorfor så få?

Nøgler pr. udvidelsesmodul er bevidst begrænset til ægte projektkonventioner (indstillinger, et team ville tjekke ind og dele). De fleste udvidelsesmodulindstillinger — søgehistorik, intervaller for automatisk gemning, den senest åbnede mappe, styresystemets filtilknytninger — er personlig eller maskinbunden tilstand og hører med vilje ikke hjemme i en delt .editorconfig. Den klassiske projektkonvention, indrykningen, dækkes af standardnøglerne ovenfor. Flere nøgler til udvidelsesmoduler kan dukke op her, i takt med at moduler tager funktionen til sig.

Eksempel

En .editorconfig placeret i et projekts rod, der bruger hver egenskab og hver 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 skal stå på deres egen linje

EditorConfig har ingen kommentarer inde i en linje. Et # eller ; indleder kun en kommentar i begyndelsen af en linje. At skrive indent_size = 4 # four gør værdien til 4 # four, hvilket er ugyldigt og ignoreres stille — sæt i stedet kommentaren på linjen ovenover. (Dette svarer til enhver anden editor, der kender EditorConfig.)