EditorConfig¶
Modular Text Editor rispetta i file .editorconfig,
così l'editor si adegua automaticamente alle convenzioni di ciascun progetto —
rientro, fine riga, set di caratteri, spazi bianchi finali e ritorno a capo finale —
senza alcuna configurazione manuale. Questa è una funzionalità integrata
dell'editor, non un plugin.
È silenziosa e automatica: non ci sono comandi di menu. L'editor legge i file
.editorconfig che si applicano a un file quando lo apri e quando lo salvi.
Come funziona¶
Quando apri un file, l'editor risale dalla cartella del file raccogliendo file
.editorconfig finché non raggiunge uno marcato con root = true (o la radice
dell'unità). Vincono le regole del file più vicino, e le sezioni successive
sostituiscono le precedenti. Le impostazioni risultanti vengono applicate così:
- All'apertura —
indent_style,indent_sizeetab_widthvengono spinti nel documento, così il tasto Tab, il backspace che riduce il rientro e il rientro automatico seguono tutti la convenzione del progetto. Il.editorconfigdi un progetto ha la precedenza sulla tua impostazione globale di rientro (vedi Coppie automatiche e rientro ▸ precedenza). - Al salvataggio — gli spazi bianchi finali vengono tagliati, il ritorno a capo finale viene aggiunto/rimosso, i fine riga vengono normalizzati e il file viene scritto nel set di caratteri richiesto.
Le impostazioni del progetto si applicano in silenzio ma restano sostituibili: puoi sempre cambiare il rientro a mano, e l'intera funzionalità si può disattivare (vedi Impostazioni).
Impostazioni¶
Preferenze ▸ Generale:
- Applica le impostazioni di .editorconfig del progetto — attiva o disattiva
l'intera funzionalità (attiva per impostazione predefinita). Quando è disattivata,
l'editor ignora del tutto
.editorconfig: non applica le chiavi standard né espone le chiavi per plugin descritte più sotto.
Proprietà supportate¶
EditorConfig definisce un insieme di proprietà piccolo e fisso. La tabella le mostra tutte e indica che cosa ne fa l'editor. I nomi delle proprietà e i valori noti non distinguono maiuscole e minuscole.
| Proprietà | Valori accettati | Che cosa fa l'editor |
|---|---|---|
root |
true / false (deve comparire prima della prima [sezione]) |
true interrompe la ricerca a questo file: è la configurazione più alta. |
indent_style |
tab / space |
Sceglie tabulazioni o spazi per il rientro. |
indent_size |
un numero intero, oppure tab |
Imposta quante colonne occupa un livello di rientro (tab segue tab_width). |
tab_width |
un numero intero | Imposta la larghezza visiva di una tabulazione; per impostazione predefinita assume il valore di indent_size. |
end_of_line |
lf / cr / crlf |
Normalizza i fine riga al salvataggio. |
charset |
latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le |
Scrive il file in questa codifica al salvataggio. |
trim_trailing_whitespace |
true / false |
true rimuove spazi/tabulazioni in fondo a ogni riga al salvataggio. |
insert_final_newline |
true / false |
true garantisce che il file finisca con esattamente un ritorno a capo; false rimuove i ritorni a capo finali. |
max_line_length |
un numero intero, oppure off |
Riconosciuta, ma non ancora applicata. |
spelling_language |
un codice di lingua, ad es. en-US |
Riconosciuta, ma non ancora applicata. |
qualsiasi proprietà = unset |
unset |
Azzera un valore impostato da una regola più ampia, ripristinando il valore predefinito dell'editor stesso. |
Due proprietà vengono lette ma non hanno ancora effetto
max_line_length e spelling_language fanno parte dello standard EditorConfig,
ma non sono supportate universalmente dagli editor. L'editor le analizza (quindi
non causano errori), ma non agisce ancora su di esse.
end_of_line decide anche che cosa inserisce Invio
Un documento normalmente mantiene i fine riga che il suo file aveva già, e
Invio inserisce quelli. Quando si applica un end_of_line, il salvataggio
normalizza il buffer e porta il documento su quella convenzione, così il
prossimo Invio corrisponde a quanto appena scritto su disco. Il segmento di
fine riga della barra di stato si adegua.
Un marcatore di ordine dei byte nel .editorconfig stesso viene ignorato
Un .editorconfig salvato da un editor Windows spesso inizia con un marcatore di
ordine dei byte UTF-8. L'editor lo rimuove prima di analizzarlo, così la prima
proprietà del file —di solito root = true— viene letta normalmente.
Corrispondenza dei file (glob)¶
Ogni intestazione [sezione] è un glob confrontato con il percorso del file,
relativo alla cartella che contiene il .editorconfig:
| Schema | Corrisponde a |
|---|---|
* |
qualsiasi carattere tranne un separatore di percorso (/) |
** |
qualsiasi carattere, incluso / (attraversa le cartelle) |
? |
esattamente un carattere diverso da / |
{a,b,c} |
una qualsiasi delle stringhe separate da virgola |
{1..9} |
qualsiasi intero nell'intervallo |
[abc] |
qualsiasi singolo carattere dell'insieme |
[!abc] |
qualsiasi singolo carattere non presente nell'insieme |
name |
uno schema senza / corrisponde in qualsiasi sottocartella |
/name |
una / iniziale ancora la corrispondenza alla cartella del file di configurazione |
Impostazioni per plugin¶
Oltre alle chiavi standard, .editorconfig può portare anche configurazione per
plugin. Un plugin legge le proprie impostazioni sotto lo spazio dei nomi
mte.<plugin-id>.<key>, e un valore del progetto sostituisce la preferenza
globale dell'utente (impostata nelle Preferenze) per i file di quel progetto. Questo
dipende dallo stesso interruttore Applica le impostazioni di .editorconfig di cui
sopra: disattivalo e anche queste chiavi vengono ignorate.
Chiavi di plugin disponibili¶
Questo è l'elenco completo delle impostazioni di plugin che l'editor rispetta
oggi da .editorconfig. Cresce solo quando un plugin aderisce esplicitamente;
qualsiasi chiave non elencata qui (comprese quelle di plugin che non leggono
.editorconfig) viene analizzata, ma non ha effetto.
| Chiave | Tipo | Predefinito | Effetto |
|---|---|---|---|
mte.org.mte.url.enabled |
true / false |
l'interruttore globale dell'Evidenziazione degli URL (Preferenze) | Attiva o disattiva il rilevamento e l'evidenziazione degli URL per i file di questo progetto. |
Esempio: disattivare l'evidenziazione degli URL per un progetto, indipendentemente dall'interruttore globale:
Perché così poche?
Le chiavi per plugin sono intenzionalmente limitate a vere convenzioni di
progetto (impostazioni che una squadra registrerebbe e condividerebbe). La
maggior parte delle impostazioni di plugin —cronologia di ricerca, intervalli di
salvataggio automatico, l'ultima cartella aperta, le associazioni di file del
sistema operativo— è stato personale o della macchina e deliberatamente non
appartiene a un .editorconfig condiviso. La classica convenzione di progetto,
il rientro, è coperta dalle chiavi standard di cui sopra. Altre chiavi di plugin
potrebbero comparire qui man mano che i plugin adottano la funzionalità.
Esempio¶
Un .editorconfig collocato nella radice di un progetto, che usa ogni proprietà e
forma di glob:
# 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
I commenti devono stare su una riga propria
EditorConfig non ha commenti in linea. Un # o un ; iniziano un commento
solo all'inizio di una riga. Scrivere indent_size = 4 # quattro rende il
valore 4 # quattro, che non è valido e viene ignorato in silenzio: metti
invece il commento sulla riga sopra. (Questo corrisponde a ogni altro editor che
conosce EditorConfig.)