Saltar a contenido

Recetas por lenguaje

Recetas que funcionan para los sospechosos habituales: qué instalar para el servidor y los formateadores de cada lenguaje, y la configuración que los conecta. Cada fragmento va en config.json (ver Configuración) o, equivalentemente, en Ajustes ▸ Servidores de lenguaje — aquí se muestran las formas editadas a mano porque son más fáciles de copiar. Los servidores listados coinciden con el registro integrado, así que instalar la herramienta suele bastar; las entradas lsp de abajo solo hacen falta cuando se quiere un servidor distinto del predeterminado.

Las líneas de instalación asumen Homebrew en macOS; en Linux, el gestor de paquetes o el instalador del propio lenguaje hacen el mismo trabajo.

Python

brew install pyright ruff black

(o npm install -g pyright, pip install ruff black.)

Pyright es el servidor predeterminado. Ruff corrige y Black formatea en cada guardado:

{
  "preprocessors": {
    "defaults": { "python": ["ruff check --fix-only -", "black -"] }
  }
}

¿Prefieres python-lsp-server? Instálalo (pip install python-lsp-server) y apunta el lenguaje hacia él:

{ "lsp": { "defaults": { "python": "pylsp" } } }

Go

brew install go gopls

gopls se encuentra automáticamente. gofmt viene con el propio Go:

{ "preprocessors": { "defaults": { "go": ["gofmt"] } } }

Cambia a goimports (go install golang.org/x/tools/cmd/goimports@latest) para gestionar también los imports al guardar.

Rust

rustup component add rust-analyzer rustfmt

rust-analyzer es el servidor predeterminado. rustfmt lee stdin al llamarlo sin argumentos:

{ "preprocessors": { "defaults": { "rust": ["rustfmt"] } } }

JavaScript

npm install -g typescript typescript-language-server prettier

typescript-language-server es el servidor predeterminado. Prettier elige su parser por el nombre del archivo, así que pásale el real — {filename} se expande a él:

{
  "preprocessors": {
    "defaults": { "javascript": ["prettier --stdin-filepath {filename}"] }
  }
}

C

brew install llvm

clangd y clang-format vienen ambos con LLVM (las herramientas de línea de comandos de Xcode también traen un clangd). clang-format lee stdin por defecto y respeta el .clang-format del proyecto:

{ "preprocessors": { "defaults": { "c": ["clang-format"] } } }

Swift

sourcekit-lsp viene con Xcode y se encuentra automáticamente. swift-format viene con las toolchains recientes:

{ "preprocessors": { "defaults": { "swift": ["swift format"] } } }

Shell

brew install bash-language-server shfmt shellcheck
{ "preprocessors": { "defaults": { "bash": ["shfmt"] } } }

JSON / YAML / Markdown

Prettier cubre los tres; Markdown además tiene la vista previa integrada y la corrección ortográfica de prosa sin configurar nada:

{
  "preprocessors": {
    "defaults": {
      "json": ["prettier --stdin-filepath {filename}"],
      "yaml": ["prettier --stdin-filepath {filename}"],
      "markdown": ["prettier --stdin-filepath {filename}"]
    }
  }
}

Comprobar una receta

Abre un archivo del lenguaje y mira el subtítulo de la ventana: los contadores de problemas aparecen cuando el servidor responde. Si no pasa nada, la página de Servidores de lenguaje cubre el registro de depuración (~/Library/Logs/Textchum/lsp.log), las reglas de PATH y el respaldo con ctags para proyectos sin servidor. Los fallos de los preprocesadores siempre salen como una alerta con el comando y su stderr — una cadena nunca puede tragarse un guardado en silencio.