Waipe
Extensión de VS Code para ocultar, mostrar o eliminar todos los comentarios del archivo actual.
Waipe: paño de limpieza.
Qué hace
| Elemento |
Comportamiento |
| Ícono en la barra de estado (abajo a la derecha) |
$(eye) ojo abierto = comentarios visibles · $(eye-closed) ojo cerrado = ocultos. Un clic alterna entre ambos. |
| Menú contextual del editor (clic derecho) |
Alternar visibilidad de comentarios, Eliminar todos los comentarios... y Eliminar comentarios de la selección... |
| Atajo de teclado |
Ctrl+Alt+/ (Cmd+Alt+/ en macOS) para alternar |
| Paleta de comandos |
Todo lo anterior bajo la categoría Comentarios |
La eliminación siempre muestra un diálogo modal de advertencia con la cantidad exacta de comentarios afectados; no se borra nada hasta confirmar.
Instalación para desarrollo
cd C:\ruta\a\waipe
npm install
npm run compile
code .
Luego presiona F5 en VS Code: se abre una ventana Extension Development Host con la extensión cargada. Abre cualquier archivo de código y prueba el ojo en la barra de estado.
Empaquetar e instalar en tu VS Code real
cd C:\ruta\a\waipe
npx @vscode/vsce package
code --install-extension waipe-0.1.0.vsix
Si vsce reclama por el campo publisher o por falta de repositorio, puedes empaquetar igual con:
npx @vscode/vsce package --allow-missing-repository
Configuración
| Ajuste |
Por defecto |
Para qué sirve |
waipe.modoDeOcultacion |
colapsar |
colapsar (el texto deja de ocupar ancho), transparente (invisible pero conserva el espacio) o atenuar (baja la opacidad). |
waipe.opacidadAtenuada |
0.25 |
Opacidad del modo atenuar. |
waipe.mostrarEnBarraDeEstado |
true |
Muestra u oculta el ícono del ojo. |
waipe.recordarEstado |
true |
Recuerda si dejaste los comentarios ocultos al reabrir el workspace. |
waipe.conservarEncabezadoDeLicencia |
true |
No borra el bloque inicial si contiene copyright, licencia o SPDX. |
waipe.docstringsDePythonComoComentarios |
true |
Trata """ ... """ como comentario. Ponlo en false si no quieres que se borren los docstrings. |
waipe.lenguajesPersonalizados |
{} |
Define sintaxis para lenguajes no incluidos. |
Ejemplo de lenguaje personalizado en settings.json:
"waipe.lenguajesPersonalizados": {
"miDSL": {
"linea": ["#", "//"],
"bloque": [["<%", "%>"]],
"cadenas": [{ "inicio": "\"", "fin": "\"", "escape": "\\" }]
}
}
Cómo detecta los comentarios
src/escaner.ts recorre el texto como una máquina de estados que entra y sale de los literales de cadena. Eso evita los falsos positivos clásicos:
const url = "https://ejemplo.cl/ruta"; // el // de la URL no se toca
const s = "esto /* no */ es comentario";
const t = `plantilla // con slash`;
Se soportan alrededor de 60 languageId (familia C, Python, SQL, shell, YAML, HTML/XML, Lua, Haskell, PowerShell, VB, LaTeX, Pascal, etc.). Ver src/lenguajes.ts.
Lenguajes embebidos
src/regiones.ts parte los archivos mixtos en regiones y analiza cada una con su propia sintaxis:
| Archivo |
Fuera de los bloques |
<script> |
<style> |
<?php ?> |
.html, .vue, .svelte, .astro |
<!-- --> |
// /* */ |
/* */ |
— |
.php |
<!-- --> |
// /* */ |
/* */ |
// # /* */ |
Un <script> que está dentro de un comentario HTML no se analiza.
Al eliminar
- Si el comentario ocupa la línea completa, se borra la línea entera (sin dejar líneas en blanco).
- Si va al final de una línea de código, se borran también los espacios que quedaban antes.
- Todo se aplica como una sola edición:
Ctrl+Z revierte la operación completa.
Limitaciones conocidas
- Modo
colapsar: el texto se colapsa vía CSS, pero el cursor y las selecciones siguen recorriendo los caracteres ocultos. Si te molesta, usa el modo atenuar.
- Los comentarios que ocupan una línea completa dejan una línea vacía al ocultarse. VS Code no permite eliminar líneas visualmente sin modificar el documento.
- El escáner no interpreta literales de expresión regular de JavaScript. Los problemáticos son los que contienen una comilla suelta (
/"/, /'/), porque el escáner cree que abre una cadena. /\/\// en cambio se analiza bien.
- En archivos mixtos, los comentarios dentro de atributos de evento (
onclick="// ...") se analizan como HTML, no como JavaScript.
Estructura
waipe/
├── package.json # comandos, menú contextual, configuración
├── tsconfig.json
├── .vscode/
│ ├── launch.json # F5 para depurar
│ └── tasks.json
└── src/
├── extension.ts # barra de estado, decoraciones, comandos
├── escaner.ts # detección de comentarios
└── lenguajes.ts # tabla de sintaxis por lenguaje
Soporte
¿Encontraste un bug o tienes una idea? Escríbeme a gonpec@gmail.com