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
|
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
|
var containerVisible = visibleRect
|
||||||
containerVisible.origin.x -= origin.x
|
containerVisible.origin.x -= origin.x
|
||||||
containerVisible.origin.y -= origin.y
|
containerVisible.origin.y -= origin.y
|
||||||
|
|
@ -2784,6 +2797,14 @@ class LineNumberTextView: NSTextView {
|
||||||
var charIndex = visibleChars.location
|
var charIndex = visibleChars.location
|
||||||
while charIndex < NSMaxRange(visibleChars) {
|
while charIndex < NSMaxRange(visibleChars) {
|
||||||
let lineRange = text.lineRange(for: NSRange(location: charIndex, length: 0))
|
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 lineGlyphRange = lm.glyphRange(forCharacterRange: lineRange, actualCharacterRange: nil)
|
||||||
let lineRect = lm.boundingRect(forGlyphRange: lineGlyphRange, in: tc)
|
let lineRect = lm.boundingRect(forGlyphRange: lineGlyphRange, in: tc)
|
||||||
let y = lineRect.origin.y + origin.y
|
let y = lineRect.origin.y + origin.y
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue