Cuando trabajo en un proyecto me gusta asegurarme de que el código está escrito de una manera uniforme, sin archivos donde se ha quedado un espacio de más o de menos. Trabajando en equipo esto importa todavía más: si todos escribimos el código de la misma manera, nadie pierde tiempo leyendo diferencias que no aportan nada.

Para eso uso Laravel Pint, un formateador de código que al ejecutarlo modifica tus archivos y corrige la indentación de más, añade el salto de línea que falta, ordena los imports, etc.

Pint viene instalado por defecto en los proyectos de Laravel, así que para usarlo sólo tienes que abrir la consola y ejecutar:

./vendor/bin/pint

El problema es que te tienes que acordar de lanzarlo cada vez que terminas de programar o antes de subir los cambios al repositorio. Investigando encontré la forma de que se ejecute solo, sobre el archivo que estás modificando.

Instalar la extensión RunOnSave

Esta extensión es la que se encarga de ejecutar el comando por nosotros. Puedes instalarla desde la pestaña de extensiones de VS Code o desde su página en el Marketplace.

Después editamos los ajustes de VS Code: pulsa Ctrl + Shift + P en Windows o Cmd + Shift + P en Mac, y selecciona la opción de editar los ajustes de usuario en formato JSON.

Y añadimos lo siguiente:

"emeraldwalk.runonsave": {
    "commands": [
        {
            "match": "\\.php$",
            "cmd": "${workspaceFolder}/vendor/bin/pint --dirty ${file}"
        }
    ]
}

Este comando se ejecuta sólo en los archivos con extensión .php, y gracias a --dirty sólo sobre los que tienen cambios sin confirmar, para no malgastar recursos formateando todo el proyecto en cada guardado.

A partir de aquí no tienes que hacer nada más: guardas un archivo y Pint lo deja formateado. Se nota sobre todo en las revisiones de código, donde los diffs pasan a contener sólo cambios reales en lugar de ruido de espaciado.