Aller au contenu

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'ouvertureindent_style, indent_size et tab_width sont 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 .editorconfig d'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 :

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

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