Lecturas en verde, escrituras en rojo: la feature "tonta" del IDE que en Doom estaba apagada
La feature que no sabías que necesitabas hasta que la tienes
Hay funciones del IDE que no salen en ningún tour de ventas pero que usas sin parar: dejas el cursor sobre una variable y, al instante, todas sus apariciones se resaltan, con un color para las lecturas y otro para las escrituras. De un vistazo ves dónde nace ese valor, dónde se toca y dónde solo se consulta. Para leer código ajeno (o el tuyo de hace seis meses) vale oro.
La traía de IntelliJ y era de las pocas cosas que de verdad echaba de menos en Emacs. Resulta que no la echaba de menos: estaba ahí, apagada.
La prueba: el mismo código, los dos editores
Arriba Doom Emacs, abajo
IntelliJ. Mismo fichero, cursor sobre
$item: la escritura ($item = new...) en rojo,
las lecturas ($item->...) en verde. Idéntico.
Cómo se hace: se llama `lsp-document-highlight`
El nombre del invento es symbol highlighting, y lo sirve el LSP (el mismo servidor de lenguaje que te da el autocompletado y el "ir a definición"). Cuando paras el cursor sobre un símbolo, el editor le pregunta al servidor "¿dónde más aparece esto?", y el servidor responde clasificando cada aparición: texto, lectura o escritura. Esos tres tipos son los que IntelliJ pinta de colores, y los que Emacs puede pintar también.
El problema es doble, y por eso no lo veías:
- En muchas distribuciones (Doom incluido) viene desactivado por defecto, por rendimiento.
- Y aunque lo enciendas, las tres caras (texto / lectura / escritura) traen el mismo color de fábrica — así que no distingues una lectura de una escritura, que era justo la gracia.
Las cuatro líneas que lo encienden
Activarlo y darle a cada tipo su color:
;; 1. Encender el resaltado de simbolo (viene apagado)
(after! lsp-mode
(setq lsp-enable-symbol-highlighting t))
;; 2. Un color para cada tipo (venian los tres iguales)
(custom-set-faces!
'(lsp-face-highlight-read :background "#2e4636") ; lectura -> verde
'(lsp-face-highlight-write :background "#5c3a3a" :weight bold) ; escritura -> rojo
'(lsp-face-highlight-textual :background "#3a3f4b")) ; texto -> neutro
Recargas la config, refrescas el LSP del buffer
(M-x lsp-workspace-restart o cierras y reabres el fichero),
dejas el cursor sobre una variable medio segundo… y ahí está. Los
colores son sugerencias: súbelos o bájalos a tu gusto (yo los dejé
tirando a sutiles para no cansar la vista).
Un apunte: el tono exacto puede no salir igual que el mío si tu terminal no está en truecolor —los colores oscuros desaturados se cuantizan feo en 256 colores—, pero eso es otra historia (que conté en otro post).
Otra del IDE que ya tenías
Esto no fue programar nada nuevo: fue encender un interruptor y elegir dos colores. La feature llevaba ahí todo el tiempo, dormida y en gris. Es el patrón que me voy encontrando una y otra vez al migrar mi flujo del IDE a Doom: lo que crees que te falta casi nunca falta — está apagado, mal configurado, o se llama de una forma que no imaginabas.
Una menos en la lista de "cosas que me ataban al IDE". Y van varias.
— doomguru
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario