aboutsummaryrefslogtreecommitdiff
path: root/Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 09:27:49 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 09:27:49 +0200
commit8564439356f4bcc3e21b19738eb87b4c0722c623 (patch)
tree1465f4e48be83d255e5c68de804ba940db238bea /Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift
parentff3619fdf3fce82d95124654a18b66ca3ed380cd (diff)
Add missing vertex detection
Diffstat (limited to 'Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift')
-rw-r--r--Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift25
1 files changed, 21 insertions, 4 deletions
diff --git a/Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift b/Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift
index e0aaee7..d51a80f 100644
--- a/Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift
+++ b/Map/Business/WmapSyntaxHighlighter/SyntaxHighlighter.swift
@@ -16,11 +16,13 @@ import AppKit
extension Wmap {
class SyntaxHighlighter {
- private var cachedSyntaxElements: [SyntaxElement] = []
+ var cachedSyntaxElements: [SyntaxElement] = []
private var lineToElementsMap: [Int: [SyntaxElement]] = [:]
+ private var cachedVertexLabels: Set<String> = Set()
- func updateSyntaxElements(from parsedMap: [Entity]) {
- cachedSyntaxElements = parsedMap.flatMap { $0.syntaxElements }
+ func updateSyntaxElements(from parsedMap: Wmap.ParsedMap) {
+ cachedSyntaxElements = parsedMap.entities.flatMap { $0.syntaxElements }
+ cachedVertexLabels = parsedMap.vertexLabels
// Build line-to-elements mapping for fast lookup
lineToElementsMap.removeAll()
@@ -55,7 +57,22 @@ extension Wmap {
}
let color = colorForSyntaxType(element.type)
- textStorage.addAttribute(.foregroundColor, value: color, range: nsRange)
+ var attributes: [NSAttributedString.Key: Any] = [
+ .foregroundColor: color
+ ]
+
+ if UserDefaults.standard.bool(forKey: "useSmartEditor") {
+ if element.type == .vertexLabel && !cachedVertexLabels.contains(element.value) {
+ if UserDefaults.standard.bool(forKey: "highlightMissingComponents") {
+ attributes[.underlineStyle] =
+ NSUnderlineStyle.thick.rawValue | NSUnderlineStyle.patternDot.rawValue
+ attributes[.underlineColor] = NSColor.Theme.Syntax.error
+ attributes[.init("MissingComponent")] = element.value
+ }
+ }
+ }
+
+ textStorage.addAttributes(attributes, range: nsRange)
}
}