Ga naar inhoud

EditorConfig

Modular Text Editor eerbiedigt .editorconfig-bestanden, zodat de editor zich automatisch naar de afspraken van elk project voegt — inspringing, regeleinden, tekenset, volgwitruimte en een afsluitende nieuwe regel — zonder dat u iets hoeft in te stellen. Dit is een ingebouwde functie van de editor, geen plug-in.

Ze is stil en automatisch: er zijn geen menuopdrachten. De editor leest de .editorconfig-bestanden die op een bestand van toepassing zijn wanneer u het opent en opslaat.

Hoe het werkt

Wanneer u een bestand opent, loopt de editor omhoog vanaf de map van het bestand en verzamelt .editorconfig-bestanden tot hij er een bereikt met root = true (of de wortel van de schijf). Regels uit het dichtstbijzijnde bestand winnen, en latere secties overschrijven eerdere. De resulterende instellingen worden zo toegepast:

  • Bij het openen — indent_style, indent_size en tab_width worden in het document gezet, zodat de Tab-toets, het uitspringen met backspace en het automatisch inspringen alle de afspraak van het project volgen. De .editorconfig van een project heeft voorrang op uw globale inspringinstelling (zie Automatische paren en inspringing ▸ voorrang).
  • Bij het opslaan — volgwitruimte wordt weggeknipt, de afsluitende nieuwe regel wordt toegevoegd of verwijderd, regeleinden worden genormaliseerd, en het bestand wordt in de gevraagde tekenset weggeschreven.

Projectinstellingen gelden stilzwijgend maar blijven overschrijfbaar: u kunt de inspringing altijd met de hand wijzigen, en de hele functie kan worden uitgezet (zie Instellingen).

Instellingen

Voorkeuren ▸ Algemeen:

  • .editorconfig-instellingen uit het project toepassen — zet de hele functie aan of uit (standaard aan). Staat die uit, dan negeert de editor .editorconfig volledig: hij past noch de standaardsleutels toe, noch stelt hij de sleutels per plug-in beschikbaar die hieronder beschreven staan.

Ondersteunde eigenschappen

EditorConfig definieert een kleine, vaste verzameling eigenschappen. De tabel toont ze allemaal en wat de editor ermee doet. Namen van eigenschappen en de bekende waarden zijn niet hoofdlettergevoelig.

Eigenschap Aanvaarde waarden Wat de editor doet
root true / false (moet vóór de eerste [sectie] staan) true stopt het zoeken bij dit bestand — het is de bovenste configuratie.
indent_style tab / space Kiest tabs of spaties om in te springen.
indent_size een geheel getal, of tab Bepaalt hoeveel kolommen één inspringniveau is (tab volgt tab_width).
tab_width een geheel getal Bepaalt de zichtbare breedte van een tab; standaard gelijk aan indent_size.
end_of_line lf / cr / crlf Normaliseert de regeleinden bij het opslaan.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Schrijft het bestand bij het opslaan in deze tekencodering.
trim_trailing_whitespace true / false true verwijdert bij het opslaan spaties/tabs aan het einde van elke regel.
insert_final_newline true / false true zorgt dat het bestand op precies één nieuwe regel eindigt; false verwijdert afsluitende nieuwe regels.
max_line_length een geheel getal, of off Wordt herkend maar nog niet toegepast.
spelling_language een taalcode, bijvoorbeeld en-US Wordt herkend maar nog niet toegepast.
elke eigenschap = unset unset Wist een waarde die door een bredere regel is gezet en herstelt de eigen standaard van de editor.

Twee eigenschappen worden gelezen maar nog niet opgevolgd

max_line_length en spelling_language horen bij de EditorConfig-standaard maar worden niet door alle editors ondersteund. De editor ontleedt ze (zodat ze geen fouten veroorzaken) maar handelt er nog niet naar.

end_of_line bepaalt ook wat Enter invoegt

Een document behoudt normaal de regeleinden die zijn bestand al had, en Enter voegt die in. Wanneer er een end_of_line van toepassing is, normaliseert het opslaan de buffer en brengt het het document op die afspraak, zodat de eerstvolgende Enter overeenkomt met wat er zojuist naar de schijf is geschreven. Het regeleindesegment op de statusbalk gaat mee.

Een byte-ordemarkering in .editorconfig zelf wordt genegeerd

Een .editorconfig die door een Windows-editor is opgeslagen begint vaak met een UTF-8-byte-ordemarkering. De editor knipt die weg voor het ontleden, zodat de eerste eigenschap van het bestand — meestal root = true — gewoon gelezen wordt.

Bestanden koppelen (globs)

Elke [sectie]-kop is een glob die wordt vergeleken met het bestandspad, ten opzichte van de map die de .editorconfig bevat:

Patroon Komt overeen met
* willekeurige tekens behalve een padscheidingsteken (/)
** willekeurige tekens, inclusief / (overspant mappen)
? precies één teken behalve /
{a,b,c} een van de door komma's gescheiden tekenreeksen
{1..9} elk geheel getal in het bereik
[abc] elk enkel teken uit de verzameling
[!abc] elk enkel teken dat niet in de verzameling zit
name een patroon zonder / past in elke submap
/name een / aan het begin verankert de overeenkomst aan de map van het configuratiebestand

Instellingen per plug-in

Naast de standaardsleutels kan .editorconfig ook configuratie per plug-in dragen. Een plug-in leest haar eigen instellingen onder de naamruimte mte.<plugin-id>.<key>, en een projectwaarde overschrijft de globale voorkeur van de gebruiker (ingesteld in Voorkeuren) voor bestanden in dat project. Dit wordt door dezelfde schakelaar .editorconfig-instellingen toepassen hierboven beheerst — zet die uit en ook deze sleutels worden genegeerd.

Beschikbare plug-insleutels

Dit is de volledige lijst van plug-ininstellingen die de editor vandaag uit .editorconfig eerbiedigt. Hij groeit alleen naarmate een plug-in zich uitdrukkelijk aanmeldt; elke sleutel die hier niet staat (ook die van plug-ins die .editorconfig niet lezen) wordt ontleed maar heeft geen effect.

Sleutel Type Standaard Effect
mte.org.mte.url.enabled true / false de globale schakelaar van de URL-markering (Voorkeuren) Schakelt het herkennen en markeren van URL's in of uit voor bestanden in dit project.

Voorbeeld — zet de URL-markering voor één project uit, ongeacht de globale schakelaar:

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

Waarom zo weinig?

Sleutels per plug-in blijven bewust beperkt tot echte projectafspraken (instellingen die een team zou vastleggen en delen). De meeste plug-ininstellingen — zoekgeschiedenis, intervallen voor automatisch opslaan, de laatst geopende map, bestandskoppelingen van het besturingssysteem — zijn persoonlijke of machinegebonden staat en horen met opzet niet in een gedeelde .editorconfig. De klassieke projectafspraak, de inspringing, wordt door de standaardsleutels hierboven gedekt. Er kunnen hier meer plug-insleutels bijkomen naarmate plug-ins de functie overnemen.

Voorbeeld

Een .editorconfig die in de wortel van een project staat, met elke eigenschap en elke glob-vorm:

# 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

Opmerkingen moeten op hun eigen regel staan

EditorConfig kent geen opmerkingen binnen een regel. Een # of ; begint alleen aan het begin van een regel een opmerking. indent_size = 4 # four schrijven maakt de waarde 4 # four, wat ongeldig is en stilzwijgend genegeerd wordt — zet de opmerking in plaats daarvan op de regel erboven. (Dit komt overeen met elke andere editor die EditorConfig kent.)