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_sizeogtab_widthskyves inn i dokumentet, så Tab-tasten, det å oppheve innrykk med Backspace og det automatiske innrykket alle følger prosjektets konvensjon. Et prosjekts.editorconfiggå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:
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.)