skip gutter line numbers for collapsed table/HR source ranges
This commit is contained in:
parent
7441ec937c
commit
3edc8838d9
|
|
@ -2745,6 +2745,19 @@ class LineNumberTextView: NSTextView {
|
|||
|
||||
let lineMode = ConfigManager.shared.lineIndicatorMode
|
||||
|
||||
// Collect collapsed block source ranges (tables, HRs) to skip in gutter
|
||||
var collapsedRanges: [NSRange] = []
|
||||
if let mlm = lm as? MarkdownLayoutManager {
|
||||
for block in mlm.blockRanges {
|
||||
switch block.kind {
|
||||
case .tableBlock, .horizontalRule:
|
||||
collapsedRanges.append(block.range)
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var containerVisible = visibleRect
|
||||
containerVisible.origin.x -= origin.x
|
||||
containerVisible.origin.y -= origin.y
|
||||
|
|
@ -2784,6 +2797,14 @@ class LineNumberTextView: NSTextView {
|
|||
var charIndex = visibleChars.location
|
||||
while charIndex < NSMaxRange(visibleChars) {
|
||||
let lineRange = text.lineRange(for: NSRange(location: charIndex, length: 0))
|
||||
|
||||
let inCollapsedBlock = collapsedRanges.contains { NSIntersectionRange($0, lineRange).length > 0 }
|
||||
if inCollapsedBlock {
|
||||
lineNumber += 1
|
||||
charIndex = NSMaxRange(lineRange)
|
||||
continue
|
||||
}
|
||||
|
||||
let lineGlyphRange = lm.glyphRange(forCharacterRange: lineRange, actualCharacterRange: nil)
|
||||
let lineRect = lm.boundingRect(forGlyphRange: lineGlyphRange, in: tc)
|
||||
let y = lineRect.origin.y + origin.y
|
||||
|
|
|
|||
Loading…
Reference in New Issue