EditorConfig¶
Modular Text Editor respecte les fichiers
.editorconfig : l'éditeur adopte automatiquement
les conventions de chaque projet — indentation, fins de ligne, jeu de
caractères, espaces de fin de ligne et saut de ligne final — sans aucune
configuration manuelle. C'est une fonctionnalité intégrée de l'éditeur,
pas une extension.
Elle est silencieuse et automatique : il n'y a aucune commande de menu.
L'éditeur lit les fichiers .editorconfig applicables à un fichier lors de son
ouverture et de son enregistrement.
Fonctionnement¶
À l'ouverture d'un fichier, l'éditeur remonte depuis le dossier du fichier en
collectant les fichiers .editorconfig jusqu'à en atteindre un marqué
root = true (ou la racine du disque). Les règles du fichier le plus proche
l'emportent, et les sections ultérieures remplacent les précédentes. Les
paramètres résultants s'appliquent ainsi :
- À l'ouverture —
indent_style,indent_sizeettab_widthsont poussés dans le document : la touche Tab, la désindentation par Retour arrière et l'indentation automatique suivent la convention du projet. Le.editorconfigd'un projet prime sur votre réglage d'indentation global (voir Paires automatiques & indentation ▸ priorité). - À l'enregistrement — les espaces de fin de ligne sont supprimés, le saut de ligne final est ajouté/retiré, les fins de ligne sont normalisées et le fichier est écrit dans le jeu de caractères demandé.
Les paramètres du projet s'appliquent en silence mais restent contournables : vous pouvez toujours changer l'indentation à la main, et la fonctionnalité entière peut être désactivée (voir Paramètres).
Paramètres¶
Préférences ▸ Général :
- Appliquer les paramètres .editorconfig du projet — active ou désactive
toute la fonctionnalité (activée par défaut). Désactivée, l'éditeur ignore
complètement
.editorconfig: il n'applique ni les clés standard ni les clés par extension décrites ci-dessous.
Propriétés prises en charge¶
EditorConfig définit un petit ensemble fixe de propriétés. Le tableau montre chacune d'elles et ce que l'éditeur en fait. Les noms de propriétés et les valeurs connues sont insensibles à la casse.
| Propriété | Valeurs acceptées | Ce que fait l'éditeur |
|---|---|---|
root |
true / false (doit précéder la première [section]) |
true arrête la recherche à ce fichier — c'est la configuration la plus haute. |
indent_style |
tab / space |
Choisit tabulations ou espaces pour l'indentation. |
indent_size |
un entier, ou tab |
Définit le nombre de colonnes d'un niveau d'indentation (tab suit tab_width). |
tab_width |
un entier | Définit la largeur visuelle d'une tabulation ; par défaut indent_size. |
end_of_line |
lf / cr / crlf |
Normalise les fins de ligne à l'enregistrement. |
charset |
latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le |
Écrit le fichier dans cet encodage à l'enregistrement. |
trim_trailing_whitespace |
true / false |
true supprime espaces/tabulations en fin de ligne à l'enregistrement. |
insert_final_newline |
true / false |
true garantit exactement un saut de ligne final ; false supprime les sauts de ligne finaux. |
max_line_length |
un entier, ou off |
Reconnue mais pas encore appliquée. |
spelling_language |
un code de langue, p. ex. en-US |
Reconnue mais pas encore appliquée. |
toute propriété = unset |
unset |
Efface une valeur posée par une règle plus large et rétablit le défaut de l'éditeur. |
Deux propriétés sont lues mais pas encore appliquées
max_line_length et spelling_language font partie du standard
EditorConfig mais ne sont pas universellement prises en charge par les
éditeurs. L'éditeur les analyse (elles ne causent donc aucune erreur) mais
n'agit pas encore dessus.
Correspondance des fichiers (globs)¶
Chaque en-tête [section] est un glob comparé au chemin du fichier, relatif au
dossier contenant le .editorconfig :
| Motif | Correspond à |
|---|---|
* |
tout caractère sauf un séparateur de chemin (/) |
** |
tout caractère, y compris / (traverse les dossiers) |
? |
exactement un caractère sauf / |
{a,b,c} |
l'une des chaînes séparées par des virgules |
{1..9} |
tout entier de l'intervalle |
[abc] |
un caractère de l'ensemble |
[!abc] |
un caractère hors de l'ensemble |
name |
un motif sans / correspond dans n'importe quel sous-dossier |
/name |
un / initial ancre la correspondance au dossier du fichier de configuration |
Paramètres par extension¶
Au-delà des clés standard, .editorconfig peut aussi transporter une
configuration par extension. Une extension lit ses propres paramètres dans
l'espace de noms mte.<id-extension>.<clé>, et une valeur de projet remplace
la préférence globale de l'utilisateur (définie dans les Préférences) pour les
fichiers de ce projet. Cela dépend du même commutateur Appliquer les
paramètres .editorconfig — désactivé, ces clés sont aussi ignorées.
Clés d'extension disponibles¶
Voici la liste complète des paramètres d'extension que l'éditeur honore
aujourd'hui depuis .editorconfig. Elle ne grandit que lorsqu'une extension
s'y inscrit explicitement ; toute clé absente de cette liste (y compris celles
d'extensions qui ne lisent pas .editorconfig) est analysée mais sans effet.
| Clé | Type | Défaut | Effet |
|---|---|---|---|
mte.org.mte.url.enabled |
true / false |
le commutateur global du Surlignage des URL (Préférences) | Active ou désactive la détection et le surlignage des URL pour les fichiers de ce projet. |
Exemple — désactiver le surlignage des URL pour un projet, quel que soit le commutateur global :
Pourquoi si peu ?
Les clés par extension sont volontairement limitées aux vraies
conventions de projet (des paramètres qu'une équipe committerait et
partagerait). La plupart des paramètres d'extension — historique de
recherche, intervalles d'enregistrement automatique, dernier dossier
ouvert, associations de fichiers de l'OS — relèvent de l'état personnel ou
machine et n'ont délibérément pas leur place dans un .editorconfig
partagé. La convention de projet classique, l'indentation, est couverte
par les clés standard ci-dessus. D'autres clés pourront apparaître ici à
mesure que les extensions adoptent la fonctionnalité.
Exemple¶
Un .editorconfig placé à la racine d'un projet, utilisant chaque propriété et
chaque forme de 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
Les commentaires doivent être sur leur propre ligne
EditorConfig n'a pas de commentaires en fin de ligne. Un # ou ; ne
commence un commentaire qu'en début de ligne. Écrire
indent_size = 4 # four donne la valeur 4 # four, invalide et ignorée
en silence — placez le commentaire sur la ligne au-dessus. (Tous les autres
éditeurs compatibles EditorConfig font de même.)