Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

fix(web): multiline highlight ranges are broken / omitted in LightweightCodeHighlighter

Abierto Apto para principiantes
#1,698 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@riteshvish02 ya está trabajando en esto.

Desde el 30/9/2026.

  • #1699 de @riteshvish02 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
frontend

Línea de trabajo

Comienza en LightweightCodeHighlighter.tsx e inspecciona cómo se filtran y mapean los highlightRanges para cada línea. Verifica los usos relacionados en symbolDefinitionPreview.tsx, fileMatch.tsx y referenceList.tsx. Se considera terminado cuando las líneas iniciales usan la columna inicial hasta line.length, las líneas intermedias resaltan desde 0 hasta line.length y las líneas finales usan 0 hasta la columna final.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

In LightweightCodeHighlighter.tsx, highlight ranges spanning multiple lines are not properly mapped across lines.

Currently, the component filters and maps ranges using:

// @todo: we will need to handle the case where a range spans multiple lines.
const ranges = highlightRanges?.filter(range => {
    return range.start.lineNumber === lineNumber || range.end.lineNumber === lineNumber;
}).map(range => ({
    from: range.start.column - 1,
    to: range.end.column - 1,
}));
Consequences
  1. Middle Lines Dropped: Any line between range.start.lineNumber and range.end.lineNumber fails the condition range.start.lineNumber === lineNumber || range.end.lineNumber === lineNumber, resulting in zero highlighting for intermediate lines.
  2. Column Inversion on Start/End Lines:
    • Start Line: to is set to range.end.column - 1 (column from a different line). If start.column > end.column, from > to creates an invalid range.
    • End Line: from is set to range.start.column - 1 (start line's column), clipping or omitting matches.
Impacted Areas

This affects all views using LightweightCodeHighlighter:

  • Symbol Definition Previews (symbolDefinitionPreview.tsx): Multi-line types, interfaces, or function definitions have broken highlights in hover popovers.
  • Search Result Chunks (fileMatch.tsx): Multi-line regex matches from Zoekt render corrupted or blank intermediate highlights.
  • References List (referenceList.tsx): Multi-line call signatures and JSX nodes.
Expected Behavior

Highlight ranges spanning multiple lines should:

  • Start line: Highlight from start.column to line.length.
  • Intermediate lines: Highlight the entire line (0 to line.length).
  • End line: Highlight from 0 to end.column.

Lenguaje dominante
TypeScript
Estrellas
3.9k
Forks
374
Merge medio
17 h 15 min
PR fusionados (30 d)
38

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de sourcebot-dev/sourcebot

Todos los issues de sourcebot-dev/sourcebot

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.