Skip to content

Limitaciones Conocidas: ¿Dónde están los límites del complemento?

Lo que aprenderás

  • Saber qué tipos de tablas no son compatibles con el complemento
  • Evitar usar el complemento en escenarios no compatibles
  • Entender los límites técnicos y las decisiones de diseño del complemento

Enfoque Central

Este complemento se enfoca en un objetivo: optimizar el formato de tablas Markdown con tuberías para el modo oculto de OpenCode.

Para lograr esto, hemos limitado deliberadamente algunas funciones para garantizar la confiabilidad y el rendimiento en los escenarios principales.

Resumen de Limitaciones Conocidas

LimitaciónDescripción¿Plan de soporte?
Tablas HTMLSolo admite tablas Markdown con tuberías (| ... |)❌ No compatible
Celdas multilíneaLas celdas no pueden contener etiquetas de salto de línea como <br>❌ No compatible
Tablas sin fila separadoraDebe tener una fila separadora `---
Celdas combinadasNo admite combinación de filas o columnas❌ No compatible
Tablas sin encabezadoLa fila separadora se considera el encabezado, no se pueden crear tablas sin encabezado❌ No compatible
Opciones de configuraciónNo se puede personalizar el ancho de columnas, deshabilitar funciones, etc.🤔 Posiblemente en el futuro
Tablas muy grandesEl rendimiento de tablas de 100+ filas no está verificado🤔 Optimización futura

Detalles de las Limitaciones

1. No admite tablas HTML

Fenómeno

html
<!-- Este tipo de tabla no se formateará -->
<table>
  <tr>
    <th>Columna 1</th>
    <th>Columna 2</th>
  </tr>
  <tr>
    <td>Dato 1</td>
    <td>Dato 2</td>
  </tr>
</table>

Causa

El complemento solo procesa tablas Markdown con tuberías (Pipe Table), es decir, el formato separado por |:

markdown
| Columna 1 | Columna 2 |
|--- | ---|
| Dato 1 | Dato 2 |

Base en el código fuente

typescript
// index.ts:58-61
function isTableRow(line: string): boolean {
  const trimmed = line.trim()
  return trimmed.startsWith("|") && trimmed.endsWith("|") && trimmed.split("|").length > 2
}

La lógica de detección solo coincide con líneas que comienzan y terminan con |, las tablas HTML se omitirán directamente.

Alternativa

Si necesitas formatear tablas HTML, se recomienda:

  • Usar otras herramientas especializadas de formato HTML
  • Convertir tablas HTML a tablas Markdown con tuberías

2. No admite celdas multilínea

Fenómeno

markdown
| Columna 1 | Columna 2 |
|--- | ---|
| Línea 1<br>Línea 2 | Una sola línea |

Al generar la salida, verás el comentario <!-- table not formatted: invalid structure -->.

Causa

El complemento procesa las tablas línea por línea, no admite saltos de línea dentro de las celdas.

Base en el código fuente

typescript
// index.ts:25-56
function formatMarkdownTables(text: string): string {
  const lines = text.split("\n")
  // ... escaneo línea por línea, sin lógica para combinar múltiples líneas
}

Alternativa

  • Dividir el contenido multilínea en múltiples filas de datos
  • O aceptar que la tabla se vuelva más ancha, mostrando el contenido en una sola línea

3. No admite tablas sin fila separadora

Fenómeno

markdown
<!-- Falta la fila separadora -->
| Columna 1 | Columna 2 |
| Dato 1 | Dato 2 |
| Dato 3 | Dato 4 |

Verás el comentario <!-- table not formatted: invalid structure -->.

Causa

Las tablas Markdown con tuberías deben incluir una fila separadora (Separator Row), que se usa para definir el número de columnas y el alineamiento.

Base en el código fuente

typescript
// index.ts:86-87
const hasSeparator = lines.some((line) => isSeparatorRow(line))
return hasSeparator  // Retorna false si no hay fila separadora

Forma correcta

markdown
| Columna 1 | Columna 2 |
| --- | --- |  ← Fila separadora
| Dato 1 | Dato 2 |
| Dato 3 | Dato 4 |

4. No admite celdas combinadas

Fenómeno

markdown
| Columna 1 | Columna 2 |
|--- | ---|
| Combinar dos columnas |  ← Se espera que abarque la columna 1 y la columna 2
| Dato 1 | Dato 2 |

Causa

El estándar Markdown no admite sintaxis de celdas combinadas, y el complemento tampoco implementa ninguna lógica de combinación.

Alternativa

  • Usar celdas vacías como marcadores de posición: | Combinar dos columnas | |
  • O aceptar las limitaciones de Markdown y usar tablas HTML en su lugar

5. La fila separadora se considera el encabezado

Fenómeno

markdown
|--- | --- | ---|
| Alineado a la izquierda | Centrado | Alineado a la derecha |
| Dato 1 | Dato 2 | Dato 3 |

La fila separadora se considerará como la fila del encabezado, no se pueden crear tablas de datos puros "sin encabezado".

Causa

La especificación Markdown considera la primera línea después de la fila separadora como el encabezado de la tabla (Table Header).

Alternativa

  • Esta es una limitación de Markdown en sí, no exclusiva del complemento
  • Si necesitas tablas sin encabezado, considera otros formatos (como CSV)

6. Sin opciones de configuración

Fenómeno

No se puede ajustar mediante archivo de configuración:

  • Ancho mínimo/máximo de columnas
  • Deshabilitar funciones específicas
  • Personalizar la estrategia de caché

Causa

La versión actual (v0.0.3) no proporciona una interfaz de configuración, todos los parámetros están codificados en el código fuente.

Nota de versión

La versión actual del complemento es v0.0.3 (declarado en package.json). La v0.1.0 registrada en CHANGELOG.md es una planificación de versión futura, aún no publicada.

Base en el código fuente

typescript
// index.ts:115 - Ancho mínimo de columna codificado como 3
const colWidths: number[] = Array(colCount).fill(3)

// index.ts:222 - Umbral de caché codificado
if (cacheOperationCount > 100 || widthCache.size > 1000) {
  cleanupCache()
}

Planificación futura

El CHANGELOG menciona posible soporte futuro:

Configuration options (min/max column width, disable features)


7. Rendimiento de tablas muy grandes no verificado

Fenómeno

Para tablas de 100+ filas, el formateo puede ser lento o consumir mucha memoria.

Causa

El complemento usa un mecanismo de escaneo línea por línea y caché, teóricamente puede procesar tablas grandes, pero no se ha realizado una optimización de rendimiento específica.

Base en el código fuente

typescript
// index.ts:5-7
const widthCache = new Map<string, number>()
let cacheOperationCount = 0

// La caché se vacía después de 100 operaciones o 1000 entradas
if (cacheOperationCount > 100 || widthCache.size > 1000) {
  cleanupCache()
}

Sugerencia

  • Para tablas muy grandes, se recomienda dividirlas en varias tablas más pequeñas
  • O esperar versiones futuras con optimización de rendimiento

Puntos de Verificación

Después de completar esta lección, deberías poder responder:

  • [ ] ¿Qué formatos de tabla admite el complemento? (Respuesta: Solo admite tablas Markdown con tuberías)
  • [ ] ¿Por qué no se pueden formatear celdas multilínea? (Respuesta: El complemento procesa línea por línea, sin lógica de combinación)
  • [ ] ¿Cuál es el propósito de la fila separadora? (Respuesta: Define el número de columnas y el alineamiento, es obligatoria)
  • [ ] ¿Se puede personalizar el ancho de columnas? (Respuesta: La versión actual no lo admite)

Advertencia de Errores Comunes

Errores Comunes

Error 1: Esperar que las tablas HTML se formateen

El complemento solo procesa tablas Markdown con tuberías, las tablas HTML deben formatearse manualmente o usar otras herramientas.

Error 2: La tabla no tiene fila separadora

La fila separadora es una parte obligatoria de las tablas Markdown, su ausencia causará un error de "estructura inválida".

Error 3: El contenido de la celda es demasiado largo, haciendo que la tabla sea muy ancha

El complemento no tiene límite de ancho máximo de columna, si el contenido de la celda es demasiado largo, toda la tabla se volverá muy ancha. Se recomienda hacer saltos de línea manualmente o simplificar el contenido.


Resumen de la Lección

LimitaciónCausaAlternativa
Tablas HTML no compatiblesEl complemento se enfoca en tablas Markdown con tuberíasUsar herramientas de formato HTML
Celdas multilínea no compatiblesLógica de procesamiento línea por líneaDividir en múltiples líneas o aceptar que se vuelva más ancha
Tablas sin fila separadora no compatiblesRequisito de la especificación MarkdownAgregar fila separadora `
Sin opciones de configuraciónLa versión actual no lo implementaEsperar actualizaciones de versiones futuras

Próxima Lección

En la próxima lección aprenderemos Detalles Técnicos.

Aprenderás:

  • Cómo funciona el mecanismo de caché del complemento
  • Estrategias de optimización de rendimiento
  • Por qué la caché se vacía después de 100 operaciones

Apéndice: Referencia del Código Fuente

Haz clic para expandir y ver las ubicaciones del código fuente

Última actualización: 2026-01-26

LimitaciónRuta del archivoNúmero de línea
Detección de tablas HTMLindex.ts58-61
Detección de fila separadoraindex.ts63-68
Validación de tabla (debe incluir fila separadora)index.ts70-88
Ancho mínimo de columna codificadoindex.ts115
Umbral de caché codificadoindex.ts222-224

Funciones clave:

  • isTableRow(): Detecta si es una fila de tabla Markdown con tuberías
  • isSeparatorRow(): Detecta la fila separadora
  • isValidTable(): Valida la validez de la estructura de la tabla

Constantes clave:

  • colWidths ancho mínimo = 3: Ancho de visualización mínimo de las columnas
  • Umbral de caché = 100 operaciones o 1000 entradas: Condición para activar la limpieza de caché

Referencia del CHANGELOG:

  • Capítulo de limitaciones conocidas: CHANGELOG.md líneas 31-36