Saltar a contenido

EditorConfig

Modular Text Editor respeta los archivos .editorconfig, de modo que el editor se ajusta automáticamente a las convenciones de cada proyecto —sangría, finales de línea, juego de caracteres, espacios sobrantes y salto de línea final— sin ninguna configuración manual. Es una función integrada del editor, no un plugin.

Es silenciosa y automática: no hay comandos de menú. El editor lee los archivos .editorconfig que se aplican a un archivo cuando lo abres y cuando lo guardas.

Cómo funciona

Cuando abres un archivo, el editor sube desde la carpeta del archivo recogiendo archivos .editorconfig hasta llegar a uno marcado con root = true (o a la raíz de la unidad). Ganan las reglas del archivo más cercano, y las secciones posteriores anulan a las anteriores. Los ajustes resultantes se aplican así:

  • Al abrir — indent_style, indent_size y tab_width se aplican al documento para que la tecla Tab, el retroceso que reduce la sangría y la sangría automática sigan la convención del proyecto. El .editorconfig de un proyecto tiene precedencia sobre tu ajuste global de sangría (consulta Pares automáticos y sangría ▸ precedencia).
  • Al guardar — se recortan los espacios sobrantes al final, se añade o elimina el salto de línea final, se normalizan los finales de línea y el archivo se escribe en el juego de caracteres solicitado.

Los ajustes del proyecto se aplican en silencio, pero se pueden anular: siempre puedes cambiar la sangría a mano, y toda la función se puede desactivar (consulta Ajustes).

Ajustes

Preferencias ▸ General:

  • Aplicar los ajustes de .editorconfig del proyecto — activa o desactiva toda la función (activada de forma predeterminada). Cuando está desactivada, el editor ignora .editorconfig por completo: ni aplica las claves estándar ni expone las claves por plugin descritas más abajo.

Propiedades admitidas

EditorConfig define un conjunto pequeño y fijo de propiedades. La tabla muestra todas ellas y qué hace el editor con cada una. Los nombres de las propiedades y los valores conocidos no distinguen mayúsculas de minúsculas.

Propiedad Valores aceptados Qué hace el editor
root true / false (debe aparecer antes de la primera [sección]) true detiene la búsqueda en este archivo: es la configuración más alta.
indent_style tab / space Elige tabulaciones o espacios para sangrar.
indent_size un número entero, o tab Fija cuántas columnas ocupa un nivel de sangría (tab sigue a tab_width).
tab_width un número entero Fija la anchura visual de una tabulación; de forma predeterminada toma el valor de indent_size.
end_of_line lf / cr / crlf Normaliza los finales de línea al guardar.
charset latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le Escribe el archivo con esta codificación al guardar.
trim_trailing_whitespace true / false true elimina los espacios y tabulaciones del final de cada línea al guardar.
insert_final_newline true / false true garantiza que el archivo termine con exactamente un salto de línea; false elimina los saltos finales.
max_line_length un número entero, o off Reconocida, pero aún no aplicada.
spelling_language un código de idioma, p. ej. en-US Reconocida, pero aún no aplicada.
cualquier propiedad = unset unset Borra un valor puesto por una regla más amplia, restaurando el valor predeterminado del propio editor.

Dos propiedades se leen pero aún no se aplican

max_line_length y spelling_language forman parte del estándar EditorConfig, pero no están admitidas universalmente por los editores. El editor las analiza (así que no provocan errores), pero todavía no actúa sobre ellas.

end_of_line decide también qué inserta Intro

Un documento conserva normalmente los finales de línea que ya tenía su archivo, y Intro inserta esos. Cuando se aplica un end_of_line, el guardado normaliza el búfer y además pasa el documento a esa convención, de modo que el siguiente Intro coincide con lo que se acaba de escribir en el disco. El segmento de fin de línea de la barra de estado lo sigue.

Una marca de orden de bytes en el propio .editorconfig se ignora

Un .editorconfig guardado por un editor de Windows suele empezar con una marca de orden de bytes UTF-8. El editor la elimina antes de analizarlo, así que la primera propiedad del archivo —normalmente root = true— se lee con normalidad.

Coincidencia de archivos (globs)

Cada encabezado [sección] es un glob que se compara con la ruta del archivo, relativa a la carpeta que contiene el .editorconfig:

Patrón Coincide con
* cualquier carácter salvo un separador de ruta (/)
** cualquier carácter, incluido / (abarca carpetas)
? exactamente un carácter que no sea /
{a,b,c} cualquiera de las cadenas separadas por comas
{1..9} cualquier entero del intervalo
[abc] cualquier carácter individual del conjunto
[!abc] cualquier carácter individual que no esté en el conjunto
name un patrón sin / coincide en cualquier subcarpeta
/name un / inicial ancla la coincidencia a la carpeta del archivo de configuración

Ajustes por plugin

Además de las claves estándar, .editorconfig puede llevar también configuración por plugin. Un plugin lee sus propios ajustes bajo el espacio de nombres mte.<plugin-id>.<key>, y un valor del proyecto anula la preferencia global del usuario (definida en Preferencias) para los archivos de ese proyecto. Esto depende del mismo conmutador Aplicar los ajustes de .editorconfig de arriba: desactívalo y estas claves también se ignoran.

Claves de plugin disponibles

Esta es la lista completa de ajustes de plugin que el editor respeta hoy desde .editorconfig. Solo crece cuando un plugin se adhiere explícitamente; cualquier clave que no aparezca aquí (incluidas las de plugins que no leen .editorconfig) se analiza, pero no tiene efecto.

Clave Tipo Predeterminado Efecto
mte.org.mte.url.enabled true / false el conmutador global del Resaltado de URL (Preferencias) Activa o desactiva la detección y el resaltado de URL para los archivos de este proyecto.

Ejemplo: desactivar el resaltado de URL en un proyecto, con independencia del conmutador global:

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

¿Por qué tan pocas?

Las claves por plugin se limitan a propósito a auténticas convenciones de proyecto (ajustes que un equipo confirmaría y compartiría). La mayoría de los ajustes de plugin —historial de búsqueda, intervalos de autoguardado, la última carpeta abierta, las asociaciones de archivos del sistema operativo— son estado personal o de la máquina y deliberadamente no pertenecen a un .editorconfig compartido. La convención de proyecto clásica, la sangría, está cubierta por las claves estándar de arriba. Puede que aparezcan aquí más claves de plugin a medida que los plugins adopten la función.

Ejemplo

Un .editorconfig situado en la raíz de un proyecto, usando todas las propiedades y formas 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

Los comentarios deben ir en su propia línea

EditorConfig no tiene comentarios en línea. Un # o un ; solo inician un comentario al principio de una línea. Escribir indent_size = 4 # cuatro hace que el valor sea 4 # cuatro, que no es válido y se ignora en silencio: pon el comentario en la línea de arriba. (Esto coincide con todos los demás editores que entienden EditorConfig.)