fix(web): multiline highlight ranges are broken / omitted in LightweightCodeHighlighter
维护者通常 1 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 82/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
- 领域
- frontend
调研方向
从 LightweightCodeHighlighter.tsx 开始,检查针对每一行如何过滤和映射 highlightRanges。验证 symbolDefinitionPreview.tsx、fileMatch.tsx 和 referenceList.tsx 中相关的使用方式。完成的标准是:起始行使用从起始列到 line.length 的范围,中间行从 0 高亮到 line.length,结束行使用从 0 到结束列的范围。
由索引模型根据 Issue 内容生成。
描述
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
- Middle Lines Dropped: Any line between
range.start.lineNumberandrange.end.lineNumberfails the conditionrange.start.lineNumber === lineNumber || range.end.lineNumber === lineNumber, resulting in zero highlighting for intermediate lines. - Column Inversion on Start/End Lines:
- Start Line:
tois set torange.end.column - 1(column from a different line). Ifstart.column > end.column,from > tocreates an invalid range. - End Line:
fromis set torange.start.column - 1(start line's column), clipping or omitting matches.
- Start Line:
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.columntoline.length. - Intermediate lines: Highlight the entire line (
0toline.length). - End line: Highlight from
0toend.column.
- 主要语言
- TypeScript
- 星标
- 3.9k
- 派生
- 374
- 平均合并
- 17 小时 15 分钟
- 30 天内合并 PR
- 38
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
sourcebot-dev/sourcebot 的其他 Issue
-
bug(web): Intermediate directory nodes in buildFileTree receive child leaf paths instead of directory paths可能已有人在做 @riteshvish02 于 3 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 88/100
sourcebot-dev/sourcebot#1707 ·
维护者通常 1 天内回复
-
[bug] Search result hydration performs duplicate repository lookups within the same chunk可能已有人在做 @dipeshbabu 于 12 天前认领。 未关闭bug triage needed
难度 2/5 1-3 小时 新手友好度 84/100
sourcebot-dev/sourcebot#1681 · 1 条评论 ·
维护者通常 1 天内回复
-
Linux ctags build instructions in CONTRIBUTING.md are missing build dependencies可能已有人在做 @The-AarushiSingh 于 19 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 84/100
sourcebot-dev/sourcebot#1633 ·
维护者通常 1 天内回复
-
Generic Git URL configs keep percent-encoded repo names可能已有人在做 @Tyagiquamar 于 19 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 78/100
sourcebot-dev/sourcebot#1384 · 4 条评论 ·
维护者通常 1 天内回复
-
MCP ask_codebase rejects explicit languageModel: getLanguageModelKey includes displayName which the MCP schema doesn't expose可能已有人在做 @pranav718 于 36 天前认领。 未关闭ask_sb bug
难度 2/5 1-3 小时 新手友好度 76/100
sourcebot-dev/sourcebot#1137 · 4 条评论 ·
维护者通常 1 天内回复
查看 sourcebot-dev/sourcebot 的全部 Issue
相似的 Issue
-
难度 2/5 1 小时以内 新手友好度 85/100
capricorn86/happy-dom#2474 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
JSerwatka/letterboxd-tweaks#81 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
siyuan-note/siyuan#20165 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 90/100
polkadot-js/phishing#5716 ·
-
bug
难度 2/5 1-3 小时 新手友好度 90/100
juice-shop/juice-shop#3662 ·
维护者通常 1 天内回复