EditorConfig¶
Modular Text Editor respektuje soubory .editorconfig, takže se
editor automaticky přizpůsobí konvencím každého projektu — odsazení, konce řádků, znaková
sada, koncové bílé znaky a závěrečný konec řádku — bez jakéhokoli ručního nastavování. Jde o
vestavěnou funkci editoru, nikoli o zásuvný modul.
Je tichá a automatická: neexistují k ní žádné příkazy nabídky. Editor čte soubory
.editorconfig platné pro daný soubor, když jej otevíráte a ukládáte.
Jak to funguje¶
Když soubor otevřete, editor stoupá od jeho složky nahoru a sbírá soubory .editorconfig,
dokud nedojde k některému označenému root = true (nebo ke kořeni disku). Vyhrávají pravidla
z nejbližšího souboru a pozdější sekce přebíjejí dřívější. Výsledná nastavení se uplatní
takto:
- Při otevření —
indent_style,indent_sizeatab_widthse vloží do dokumentu, aby se klávesa Tab, odsazení zpět Backspacem i automatické odsazení řídily konvencí projektu..editorconfigprojektu má přednost před vaším globálním nastavením odsazení (viz Automatické páry a odsazení ▸ přednost). - Při uložení — koncové bílé znaky se oříznou, závěrečný konec řádku se přidá či odebere, konce řádků se sjednotí a soubor se zapíše v požadované znakové sadě.
Projektová nastavení se uplatňují tiše, ale zůstávají přebitelná: odsazení můžete vždy změnit ručně a celou funkci lze vypnout (viz Nastavení).
Nastavení¶
Předvolby ▸ Obecné:
- Použít nastavení .editorconfig z projektu — zapne nebo vypne celou funkci (ve výchozím
stavu zapnuto). Při vypnutí editor
.editorconfigzcela ignoruje: neuplatní standardní klíče ani nezpřístupní klíče pro jednotlivé zásuvné moduly popsané níže.
Podporované vlastnosti¶
EditorConfig definuje malou, pevnou sadu vlastností. Tabulka ukazuje všechny a co s nimi editor dělá. U názvů vlastností a známých hodnot nezáleží na velikosti písmen.
| Vlastnost | Přijímané hodnoty | Co editor udělá |
|---|---|---|
root |
true / false (musí být před první [sekcí]) |
true zastaví hledání u tohoto souboru — je to nejvyšší konfigurace. |
indent_style |
tab / space |
Volí pro odsazování tabulátory nebo mezery. |
indent_size |
celé číslo, nebo tab |
Nastavuje, kolik sloupců je jedna úroveň odsazení (tab se řídí tab_width). |
tab_width |
celé číslo | Nastavuje zobrazenou šířku tabulátoru; výchozí je indent_size. |
end_of_line |
lf / cr / crlf |
Při uložení sjednotí konce řádků. |
charset |
latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le |
Při uložení zapíše soubor v tomto kódování. |
trim_trailing_whitespace |
true / false |
true při uložení odstraní mezery a tabulátory na konci každého řádku. |
insert_final_newline |
true / false |
true zajistí, že soubor končí právě jedním koncem řádku; false koncové konce řádků odstraní. |
max_line_length |
celé číslo, nebo off |
Rozpoznáno, ale zatím se neuplatňuje. |
spelling_language |
kód jazyka, například en-US |
Rozpoznáno, ale zatím se neuplatňuje. |
libovolná vlastnost = unset |
unset |
Zruší hodnotu nastavenou širším pravidlem a obnoví vlastní výchozí hodnotu editoru. |
Dvě vlastnosti se čtou, ale zatím se podle nich nejedná
max_line_length a spelling_language jsou součástí standardu EditorConfig, ale editory
je nepodporují všeobecně. Editor je zpracuje (takže nezpůsobují chyby), ale zatím se
podle nich neřídí.
end_of_line také rozhoduje, co vloží Enter
Dokument si běžně ponechává konce řádků, které jeho soubor už měl, a Enter vkládá je.
Když se uplatní end_of_line, uložení sjednotí buffer a zároveň převede dokument na
tuto konvenci, takže hned následující Enter odpovídá tomu, co se právě zapsalo na disk.
Část stavového řádku s koncem řádků to následuje.
Značka pořadí bajtů v samotném .editorconfig se ignoruje
.editorconfig uložený editorem ve Windows často začíná značkou pořadí bajtů UTF-8.
Editor ji před zpracováním odstraní, takže se první vlastnost souboru — obvykle
root = true — přečte normálně.
Porovnávání souborů (globy)¶
Každá hlavička [sekce] je glob porovnávaný s cestou souboru relativně ke složce obsahující
.editorconfig:
| Vzor | Odpovídá |
|---|---|
* |
libovolným znakům kromě oddělovače cesty (/) |
** |
libovolným znakům včetně / (přesahuje složky) |
? |
právě jednomu znaku kromě / |
{a,b,c} |
kterémukoli z řetězců oddělených čárkami |
{1..9} |
libovolnému celému číslu v rozsahu |
[abc] |
libovolnému jednomu znaku z množiny |
[!abc] |
libovolnému jednomu znaku, který v množině není |
název |
vzor bez / odpovídá v kterékoli podsložce |
/název |
úvodní / ukotví shodu na složku konfiguračního souboru |
Nastavení jednotlivých zásuvných modulů¶
Kromě standardních klíčů může .editorconfig nést i konfiguraci jednotlivých zásuvných
modulů. Modul čte vlastní nastavení pod jmenným prostorem mte.<plugin-id>.<key> a
projektová hodnota přebíjí pro soubory v tomto projektu globální předvolbu uživatele
(nastavenou v Předvolbách). Řídí to týž přepínač Použít nastavení .editorconfig výše —
vypněte jej a i tyto klíče se ignorují.
Dostupné klíče zásuvných modulů¶
Toto je úplný seznam nastavení modulů, která dnes editor z .editorconfig respektuje.
Roste, jen když se k tomu modul výslovně přihlásí; klíč, který zde není uveden (včetně klíčů
modulů, které .editorconfig nečtou), se zpracuje, ale nemá žádný účinek.
| Klíč | Typ | Výchozí | Účinek |
|---|---|---|---|
mte.org.mte.url.enabled |
true / false |
globální přepínač Zvýrazňovače URL (Předvolby) | Zapne či vypne rozpoznávání a zvýrazňování URL pro soubory v tomto projektu. |
Příklad — vypnutí zvýrazňování URL pro jeden projekt bez ohledu na globální přepínač:
Proč tak málo?
Klíče jednotlivých modulů jsou záměrně omezené na skutečné projektové konvence
(nastavení, která by tým zakomitoval a sdílel). Většina nastavení modulů — historie
hledání, intervaly automatického ukládání, naposledy otevřená složka, přiřazení souborů v
operačním systému — jsou osobním nebo strojovým stavem a do sdíleného .editorconfig
záměrně nepatří. Klasickou projektovou konvenci, odsazení, pokrývají standardní klíče
výše. Jak budou moduly funkci přijímat, mohou zde přibývat další klíče.
Příklad¶
.editorconfig umístěný v kořeni projektu, používající každou vlastnost i podobu globu:
# 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
Komentáře musí být na vlastním řádku
EditorConfig nemá vložené komentáře. # nebo ; začíná komentář pouze na začátku
řádku. Napsáním indent_size = 4 # čtyři získá hodnota podobu 4 # čtyři, což je
neplatné a tiše se to ignoruje — napište komentář raději na řádek nad tím. (Takto se
chová každý další editor, který EditorConfig zná.)