Preskočiť na obsah

EditorConfig

Modular Text Editor rešpektuje súbory .editorconfig, takže sa editor automaticky prispôsobí zvyklostiam každého projektu — odsadeniu, koncom riadkov, znakovej sade, medzerám na konci riadka aj koncovému novému riadku — bez akéhokoľvek ručného nastavovania. Ide o vstavanú funkciu editora, nie o zásuvný modul.

Funguje potichu a automaticky: neexistujú k nej žiadne príkazy v ponuke. Editor prečíta súbory .editorconfig platné pre daný súbor pri jeho otvorení a uložení.

Ako to funguje

Keď otvoríte súbor, editor postupuje smerom nahor od priečinka so súborom a zbiera súbory .editorconfig, kým nenarazí na taký, ktorý je označený root = true (alebo na koreň disku). Vyhrávajú pravidlá z najbližšieho súboru a neskoršie sekcie prekrývajú skoršie. Výsledné nastavenia sa uplatnia takto:

  • Pri otvorení — indent_style, indent_size a tab_width sa vložia do dokumentu, takže kláves Tab, zmenšenie odsadenia backspaceom aj automatické odsadenie rešpektujú zvyklosť projektu. Súbor .editorconfig projektu má prednosť pred vaším globálnym nastavením odsadenia (pozri Automatické páry a odsadenie ▸ poradie).
  • Pri uložení — orežú sa medzery na konci riadkov, pridá alebo odoberie sa koncový nový riadok, zjednotia sa konce riadkov a súbor sa zapíše v požadovanej znakovej sade.

Nastavenia projektu sa uplatňujú potichu, ale ostávajú prepísateľné: odsadenie môžete kedykoľvek zmeniť ručne a celú funkciu sa dá vypnúť (pozri Nastavenia).

Nastavenia

Predvoľby ▸ Všeobecné:

  • Uplatňovať nastavenia .editorconfig z projektu — zapne alebo vypne celú funkciu (predvolene zapnuté). Keď je vypnutá, editor .editorconfig úplne ignoruje: neuplatní štandardné kľúče ani nesprístupní kľúče jednotlivých zásuvných modulov opísané nižšie.

Podporované vlastnosti

EditorConfig definuje malú, pevne danú sadu vlastností. Tabuľka uvádza všetky a to, čo s nimi editor robí. Názvy vlastností aj známe hodnoty nerozlišujú veľkosť písmen.

Vlastnosť Prijímané hodnoty Čo editor urobí
root true / false (musí byť uvedené pred prvou sekciou [section]) true zastaví hľadanie pri tomto súbore — je to najvyššia konfigurácia.
indent_style tab / space Zvolí na odsadzovanie tabulátory alebo medzery.
indent_size celé číslo alebo tab Určí, koľko stĺpcov má jedna úroveň odsadenia (tab sa riadi hodnotou tab_width).
tab_width celé číslo Určí vizuálnu šírku tabulátora; predvolene sa rovná indent_size.
end_of_line lf / cr / crlf Pri ukladaní zjednotí konce riadkov.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Pri ukladaní zapíše súbor v tomto kódovaní.
trim_trailing_whitespace true / false true pri ukladaní odstráni medzery a tabulátory na konci každého riadka.
insert_final_newline true / false true zaručí, že sa súbor končí presne jedným novým riadkom; false koncové nové riadky odstráni.
max_line_length celé číslo alebo off Rozpoznané, ale zatiaľ sa neuplatňuje.
spelling_language kód jazyka, napr. en-US Rozpoznané, ale zatiaľ sa neuplatňuje.
ľubovoľná vlastnosť = unset unset Zruší hodnotu nastavenú širším pravidlom a obnoví vlastnú predvoľbu editora.

Dve vlastnosti sa čítajú, ale zatiaľ sa podľa nich nekoná

max_line_length a spelling_language sú súčasťou štandardu EditorConfig, no editory ich nepodporujú plošne. Editor ich spracuje (takže nespôsobujú chyby), ale zatiaľ sa podľa nich neriadi.

end_of_line určuje aj to, čo vloží Enter

Dokument si bežne ponecháva konce riadkov, aké jeho súbor už mal, a Enter vkladá práve ich. Keď sa uplatní end_of_line, uloženie buffer zjednotí a zároveň prepne dokument na danú zvyklosť, takže hneď nasledujúci Enter zodpovedá tomu, čo sa práve zapísalo na disk. Segment stavového riadka s koncami riadkov to nasleduje.

Značka poradia bajtov v samotnom .editorconfig sa ignoruje

Súbor .editorconfig uložený editorom vo Windows sa často začína značkou poradia bajtov UTF-8. Editor ju pred spracovaním odstráni, takže prvá vlastnosť súboru — zvyčajne root = true — sa prečíta bežným spôsobom.

Zhoda súborov (globy)

Každá hlavička [section] je glob porovnávaný s cestou k súboru, relatívnou k priečinku, ktorý obsahuje .editorconfig:

Vzor Zodpovedá
* ľubovoľným znakom okrem oddeľovača cesty (/)
** ľubovoľným znakom vrátane / (prechádza cez priečinky)
? presne jednému znaku okrem /
{a,b,c} ktorémukoľvek z reťazcov oddelených čiarkou
{1..9} ľubovoľnému celému číslu z rozsahu
[abc] ľubovoľnému jednému znaku zo sady
[!abc] ľubovoľnému jednému znaku, ktorý nie je v sade
názov vzor bez / zodpovedá v ktoromkoľvek podpriečinku
/názov úvodné / ukotví zhodu na priečinok s konfiguračným súborom

Nastavenia jednotlivých zásuvných modulov

Okrem štandardných kľúčov môže .editorconfig niesť aj konfiguráciu jednotlivých zásuvných modulov. Zásuvný modul si číta vlastné nastavenia v mennom priestore mte.<plugin-id>.<key> a hodnota z projektu prekryje pre súbory v tomto projekte globálnu predvoľbu používateľa (nastavenú v Predvoľbách). Riadi sa to tým istým prepínačom Uplatňovať nastavenia .editorconfig uvedeným vyššie — po jeho vypnutí sa ignorujú aj tieto kľúče.

Dostupné kľúče zásuvných modulov

Toto je úplný zoznam nastavení zásuvných modulov, ktoré dnes editor zo súboru .editorconfig rešpektuje. Rastie len tak, ako sa do neho zásuvné moduly výslovne zapoja; každý kľúč, ktorý tu nie je uvedený (vrátane kľúčov modulov, ktoré .editorconfig nečítajú), sa spracuje, ale nemá žiadny účinok.

Kľúč Typ Predvolené Účinok
mte.org.mte.url.enabled true / false globálny prepínač Zvýrazňovača URL (Predvoľby) Zapne alebo vypne rozpoznávanie a zvýrazňovanie adries URL pre súbory v tomto projekte.

Príklad — vypnutie zvýrazňovania adries URL pre jeden projekt bez ohľadu na globálny prepínač:

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

Prečo je ich tak málo?

Kľúče zásuvných modulov sú zámerne obmedzené na skutočné zvyklosti projektu (nastavenia, ktoré by tím zapísal do repozitára a zdieľal). Väčšina nastavení zásuvných modulov — história hľadania, intervaly automatického ukladania, naposledy otvorený priečinok, priradenia súborov v operačnom systéme — je osobným alebo strojovým stavom a do zdieľaného súboru .editorconfig zámerne nepatrí. Klasickú zvyklosť projektu, odsadenie, pokrývajú štandardné kľúče uvedené vyššie. Ďalšie kľúče zásuvných modulov tu môžu pribudnúť, ako túto funkciu prevezmú.

Príklad

Súbor .editorconfig umiestnený v koreni projektu, s použitím všetkých vlastností a tvarov globov:

# 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áre musia byť na vlastnom riadku

EditorConfig nepozná komentáre na konci riadka. Znak # alebo ; začína komentár iba na začiatku riadka. Zápisom indent_size = 4 # štyri sa hodnotou stane 4 # štyri, čo je neplatné a potichu sa ignoruje — komentár preto napíšte na riadok vyššie. (Rovnako to robí každý iný editor, ktorý pozná EditorConfig.)