Gå til innhold

EditorConfig

Modular Text Editor følger .editorconfig-filer, så redigereren av seg selv retter seg etter hvert prosjekts konvensjoner — innrykk, linjeskift, tegnsett, blanktegn på slutten av linjer og et avsluttende linjeskift — uten noe oppsett for hånd. Dette er en innebygd funksjon i redigereren og ikke et programtillegg.

Den er stille og automatisk: det finnes ingen menykommandoer. Redigereren leser de .editorconfig-filene som gjelder for en fil, når du åpner og lagrer den.

Slik virker det

Når du åpner en fil, går redigereren oppover fra filens mappe og samler .editorconfig-filer inntil den når en som er merket root = true (eller roten på stasjonen). Regler fra den nærmeste filen vinner, og senere avsnitt overstyrer tidligere. De innstillingene det ender med, brukes slik:

  • Ved åpning — indent_style, indent_size og tab_width skyves inn i dokumentet, så Tab-tasten, det å oppheve innrykk med Backspace og det automatiske innrykket alle følger prosjektets konvensjon. Et prosjekts .editorconfig går foran den globale innrykksinnstillingen din (se Automatiske par og innrykk ▸ rekkefølgen).
  • Ved lagring — blanktegn på slutten av linjene fjernes, det avsluttende linjeskiftet legges til eller tas bort, linjeskiftene normaliseres, og filen skrives i det tegnsettet som er bedt om.

Prosjektets innstillinger brukes i stillhet, men kan fortsatt overstyres: du kan alltid endre innrykket for hånd, og hele funksjonen kan slås av (se Innstillinger).

Innstillinger

Innstillinger ▸ Generelt:

  • Bruk .editorconfig-innstillinger fra prosjektet — slå hele funksjonen av eller på (på som standard). Er den av, ser redigereren helt bort fra .editorconfig: den verken bruker de standard nøklene eller blottlegger nøklene per programtillegg som er beskrevet nedenfor.

Egenskaper som støttes

EditorConfig fastsetter et lite, fast sett av egenskaper. Tabellen viser hver av dem og hva redigereren gjør med den. Egenskapsnavnene og de kjente verdiene skiller ikke mellom store og små bokstaver.

Egenskap Verdier det tas imot Hva redigereren gjør
root true / false (må stå før det første [avsnittet]) true stopper søket ved denne filen — den er det øverste oppsettet.
indent_style tab / space Velger tabulatorer eller mellomrom til innrykk.
indent_size et helt tall, eller tab Angir hvor mange kolonner ett innrykksnivå er (tab følger tab_width).
tab_width et helt tall Angir den visuelle bredden på en tabulator; er som standard indent_size.
end_of_line lf / cr / crlf Normaliserer linjeskiftene ved lagring.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Skriver filen i denne tegnkodingen ved lagring.
trim_trailing_whitespace true / false true fjerner mellomrom og tabulatorer på slutten av hver linje ved lagring.
insert_final_newline true / false true sørger for at filen slutter med nøyaktig ett linjeskift; false fjerner linjeskift på slutten.
max_line_length et helt tall, eller off Gjenkjennes, men brukes ennå ikke.
spelling_language en språkkode, for eksempel en-US Gjenkjennes, men brukes ennå ikke.
en hvilken som helst egenskap = unset unset Tømmer en verdi som er satt av en videre regel, og setter redigererens egen standard tilbake.

To egenskaper leses, men brukes ennå ikke

max_line_length og spelling_language er en del av EditorConfig-standarden, men støttes ikke av alle redigerere. Redigereren tolker dem (så de gir ingen feil), men handler ennå ikke ut fra dem.

end_of_line avgjør også hva Enter setter inn

Et dokument beholder som regel de linjeskiftene filen alt hadde, og Enter setter inn dem. Når en end_of_line gjelder, normaliserer lagringen bufferen og flytter dokumentet over på den konvensjonen, så det aller neste Enter-trykket passer til det som nettopp ble skrevet til disken. Statuslinjens avsnitt om linjeskift følger med.

Et byterekkefølgemerke i selve .editorconfig hoppes over

En .editorconfig som er lagret av en Windows-redigerer, begynner ofte med et UTF-8-byterekkefølgemerke. Redigereren fjerner det før tolkningen, så filens første egenskap — som regel root = true — leses som vanlig.

Å matche filer (globmønstre)

Hver [avsnitt]-overskrift er et globmønster som matches mot filstien, i forhold til den mappen som inneholder .editorconfig-filen:

Mønster Matcher
* hvilke som helst tegn unntatt et stiskilletegn (/)
** hvilke som helst tegn, også / (strekker seg over mapper)
? nøyaktig ett tegn unntatt /
{a,b,c} en hvilken som helst av de kommaadskilte strengene
{1..9} et hvilket som helst helt tall i området
[abc] et hvilket som helst enkelttegn i settet
[!abc] et hvilket som helst enkelttegn som ikke er i settet
navn et mønster uten / matcher i enhver undermappe
/navn en innledende / fester matchingen til oppsettfilens egen mappe

Innstillinger per programtillegg

I tillegg til de standard nøklene kan .editorconfig også bære oppsett per programtillegg. Et programtillegg leser sine egne innstillinger under navnerommet mte.<plugin-id>.<key>, og en verdi fra prosjektet overstyrer brukerens globale valg (satt under Innstillinger) for filer i det prosjektet. Dette styres av den samme bryteren Bruk .editorconfig-innstillinger ovenfor — slå den av, så hoppes også disse nøklene over.

Tilgjengelige nøkler for programtillegg

Dette er den fullstendige listen over innstillinger for programtillegg som redigereren følger fra .editorconfig i dag. Den vokser bare når et programtillegg uttrykkelig melder seg på; enhver nøkkel som ikke står her (også nøkler for programtillegg som ikke leser .editorconfig), tolkes, men har ingen virkning.

Nøkkel Type Standard Virkning
mte.org.mte.url.enabled true / false den globale bryteren for URL-utheving (Innstillinger) Slå gjenkjenning og utheving av URL-er av eller på for filer i dette prosjektet.

Eksempel — slå URL-uthevingen av for ett prosjekt, uansett den globale bryteren:

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

Hvorfor så få?

Nøkler per programtillegg er med vilje begrenset til virkelige prosjektkonvensjoner (innstillinger et team ville sjekke inn og dele). De fleste innstillingene i et programtillegg — søkehistorikk, tidsrom mellom automatiske lagringer, den sist åpnede mappen, filtilknytninger i operativsystemet — er personlige eller hører til maskinen og hører med vilje ikke hjemme i en delt .editorconfig. Den klassiske prosjektkonvensjonen, innrykket, dekkes av de standard nøklene ovenfor. Flere nøkler for programtillegg kan komme til her etter hvert som programtillegg tar funksjonen i bruk.

Eksempel

En .editorconfig som er lagt i roten av et prosjekt, og som bruker hver egenskap 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 må stå på sin egen linje

EditorConfig har ingen kommentarer på samme linje. En # eller ; begynner bare en kommentar i begynnelsen av en linje. Skriver du indent_size = 4 # fire, blir verdien 4 # fire, som er ugyldig og hoppes over i stillhet — sett kommentaren på linjen over i stedet. (Det er slik hver annen EditorConfig-bevisst redigerer gjør det.)