EditorConfig¶
Modular Text Editor honoruje pliki .editorconfig,
więc edytor automatycznie dopasowuje się do konwencji każdego projektu —
wcięcia, końce linii, zestaw znaków, końcowe spacje i końcowy znak nowej linii —
bez żadnej ręcznej konfiguracji. To wbudowana funkcja edytora, nie wtyczka.
Działa cicho i automatycznie: nie ma poleceń w menu. Edytor czyta pliki
.editorconfig dotyczące danego pliku przy jego otwieraniu i zapisywaniu.
Jak to działa¶
Przy otwieraniu pliku edytor wędruje w górę od folderu pliku, zbierając pliki
.editorconfig, aż trafi na plik oznaczony root = true (lub na korzeń
dysku). Wygrywają reguły z najbliższego pliku, a późniejsze sekcje nadpisują
wcześniejsze. Wynikowe ustawienia stosowane są tak:
- Przy otwarciu —
indent_style,indent_sizeitab_widthtrafiają do dokumentu, więc klawisz Tab, cofanie wcięcia Backspace i automatyczne wcięcia podążają za konwencją projektu..editorconfigprojektu ma pierwszeństwo przed Twoim globalnym ustawieniem wcięć (zobacz Autopary i wcięcia ▸ pierwszeństwo). - Przy zapisie — końcowe spacje są usuwane, końcowy znak nowej linii jest dodawany/usuwany, końce linii normalizowane, a plik zapisywany w żądanym zestawie znaków.
Ustawienia projektu działają cicho, ale dają się nadpisać: zawsze możesz zmienić wcięcia ręcznie, a całą funkcję można wyłączyć (zobacz Ustawienia).
Ustawienia¶
Preferencje ▸ Ogólne:
- Stosuj ustawienia .editorconfig z projektu — włącza lub wyłącza całą
funkcję (domyślnie włączona). Po wyłączeniu edytor całkowicie ignoruje
.editorconfig: nie stosuje ani kluczy standardowych, ani kluczy per wtyczka opisanych poniżej.
Obsługiwane właściwości¶
EditorConfig definiuje mały, stały zestaw właściwości. Tabela pokazuje każdą z nich i to, co edytor z nią robi. Nazwy właściwości i znane wartości nie rozróżniają wielkości liter.
| Właściwość | Akceptowane wartości | Co robi edytor |
|---|---|---|
root |
true / false (musi wystąpić przed pierwszą [sekcją]) |
true zatrzymuje wyszukiwanie na tym pliku — to najwyższa konfiguracja. |
indent_style |
tab / space |
Wybiera tabulatory lub spacje do wcięć. |
indent_size |
liczba całkowita lub tab |
Ustala, ile kolumn ma jeden poziom wcięcia (tab podąża za tab_width). |
tab_width |
liczba całkowita | Ustala wizualną szerokość tabulatora; domyślnie równa indent_size. |
end_of_line |
lf / cr / crlf |
Normalizuje końce linii przy zapisie. |
charset |
latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le |
Zapisuje plik w tym kodowaniu. |
trim_trailing_whitespace |
true / false |
true usuwa spacje/tabulatory na końcach linii przy zapisie. |
insert_final_newline |
true / false |
true gwarantuje dokładnie jeden znak nowej linii na końcu pliku; false usuwa końcowe znaki nowej linii. |
max_line_length |
liczba całkowita lub off |
Rozpoznawana, ale jeszcze nie stosowana. |
spelling_language |
kod języka, np. en-US |
Rozpoznawana, ale jeszcze nie stosowana. |
dowolna właściwość = unset |
unset |
Czyści wartość ustawioną przez szerszą regułę, przywracając domyślne ustawienie edytora. |
Dwie właściwości są czytane, ale jeszcze nie działają
max_line_length i spelling_language należą do standardu EditorConfig,
ale nie są powszechnie obsługiwane przez edytory. Edytor je parsuje (więc
nie powodują błędów), ale jeszcze na nie nie reaguje.
Dopasowywanie plików (globy)¶
Każdy nagłówek [sekcji] to glob dopasowywany do ścieżki pliku, względem
folderu zawierającego .editorconfig:
| Wzorzec | Dopasowuje |
|---|---|
* |
dowolne znaki poza separatorem ścieżki (/) |
** |
dowolne znaki, łącznie z / (obejmuje foldery) |
? |
dokładnie jeden znak poza / |
{a,b,c} |
dowolny z łańcuchów rozdzielonych przecinkami |
{1..9} |
dowolną liczbę całkowitą z zakresu |
[abc] |
dowolny pojedynczy znak ze zbioru |
[!abc] |
dowolny pojedynczy znak spoza zbioru |
name |
wzorzec bez / dopasowuje w każdym podfolderze |
/name |
wiodący / kotwiczy dopasowanie do folderu pliku konfiguracji |
Ustawienia per wtyczka¶
Poza kluczami standardowymi .editorconfig może też przenosić konfigurację
per wtyczka. Wtyczka czyta własne ustawienia w przestrzeni nazw
mte.<id-wtyczki>.<klucz>, a wartość projektu nadpisuje globalną preferencję
użytkownika (z Preferencji) dla plików tego projektu. Podlega to temu samemu
przełącznikowi Stosuj ustawienia .editorconfig — po jego wyłączeniu te
klucze też są ignorowane.
Dostępne klucze wtyczek¶
To kompletna lista ustawień wtyczek honorowanych dziś z .editorconfig.
Rośnie tylko wtedy, gdy wtyczka jawnie się do tego zgłosi; każdy klucz spoza
listy (w tym klucze wtyczek, które nie czytają .editorconfig) jest parsowany,
ale nie działa.
| Klucz | Typ | Domyślnie | Efekt |
|---|---|---|---|
mte.org.mte.url.enabled |
true / false |
globalny przełącznik Podświetlania URL (Preferencje) | Włącza lub wyłącza wykrywanie i podświetlanie URL-i dla plików tego projektu. |
Przykład — wyłączenie podświetlania URL-i w jednym projekcie, niezależnie od globalnego przełącznika:
Dlaczego tak mało?
Klucze per wtyczka są celowo ograniczone do prawdziwych konwencji
projektu (ustawień, które zespół commituje i współdzieli). Większość
ustawień wtyczek — historia wyszukiwania, interwały autozapisu, ostatnio
otwarty folder, systemowe skojarzenia plików — to stan osobisty lub stan
maszyny i celowo nie należą do współdzielonego .editorconfig.
Klasyczna konwencja projektu, wcięcia, jest pokryta kluczami standardowymi
powyżej. Kolejne klucze wtyczek mogą się tu pojawiać w miarę adopcji.
Przykład¶
Plik .editorconfig w korzeniu projektu, używający każdej właściwości i formy
globa:
# 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
Komentarze muszą stać w osobnej linii
EditorConfig nie ma komentarzy w linii. Znak # lub ; zaczyna
komentarz tylko na początku linii. Zapis indent_size = 4 # four daje
wartość 4 # four, która jest nieprawidłowa i po cichu ignorowana —
umieść komentarz w linii powyżej. (Tak samo działa każdy inny edytor
wspierający EditorConfig.)