Przejdź do treści

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 otwarciuindent_style, indent_size i tab_width trafiają do dokumentu, więc klawisz Tab, cofanie wcięcia Backspace i automatyczne wcięcia podążają za konwencją projektu. .editorconfig projektu 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:

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

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.)