Skip to content

Commit ed61630

Browse files
committed
Replace IncrementalEdit with SourceEdit
1 parent c5699fb commit ed61630

File tree

2 files changed

+6
-22
lines changed

2 files changed

+6
-22
lines changed

Sources/SourceKitLSP/Swift/DocumentFormatting.swift

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -106,29 +106,19 @@ private func edits(from original: DocumentSnapshot, to edited: String) -> [TextE
106106
switch change {
107107
case .insert(offset: let offset, element: let element, associatedWith: _):
108108
let absolutePosition = AbsolutePosition(utf8Offset: offset)
109-
return IncrementalEdit(range: absolutePosition..<absolutePosition, replacement: [element])
109+
return SourceEdit(range: absolutePosition..<absolutePosition, replacement: [element])
110110
case .remove(offset: let offset, element: _, associatedWith: _):
111111
let absolutePosition = AbsolutePosition(utf8Offset: offset)
112-
return IncrementalEdit(range: absolutePosition..<absolutePosition.advanced(by: 1), replacement: [])
112+
return SourceEdit(range: absolutePosition..<absolutePosition.advanced(by: 1), replacement: [])
113113
}
114114
}
115115

116116
let concurrentEdits = ConcurrentEdits(fromSequential: sequentialEdits)
117117

118118
// Map the offset-based edits to line-column based edits to be consumed by LSP
119119

120-
return concurrentEdits.edits.compactMap { (edit) -> TextEdit? in
121-
let (startLine, startColumn) = original.lineTable.lineAndUTF16ColumnOf(utf8Offset: edit.offset)
122-
let (endLine, endColumn) = original.lineTable.lineAndUTF16ColumnOf(utf8Offset: edit.endOffset)
123-
guard let newText = String(bytes: edit.replacement, encoding: .utf8) else {
124-
logger.fault("Failed to get String from UTF-8 bytes \(edit.replacement)")
125-
return nil
126-
}
127-
128-
return TextEdit(
129-
range: Position(line: startLine, utf16index: startColumn)..<Position(line: endLine, utf16index: endColumn),
130-
newText: newText
131-
)
120+
return concurrentEdits.edits.compactMap {
121+
TextEdit(range: original.absolutePositionRange(of: $0.range), newText: $0.replacement)
132122
}
133123
}
134124

Sources/SourceKitLSP/Swift/SwiftLanguageService.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ extension SwiftLanguageService {
537537
keys.enableDiagnostics: 0,
538538
keys.syntacticOnly: 1,
539539
keys.offset: edit.range.lowerBound.utf8Offset,
540-
keys.length: edit.length.utf8Length,
540+
keys.length: edit.range.length.utf8Length,
541541
keys.sourceText: edit.replacement,
542542
])
543543
do {
@@ -553,13 +553,7 @@ extension SwiftLanguageService {
553553
}
554554

555555
let concurrentEdits = ConcurrentEdits(
556-
fromSequential: edits.map {
557-
IncrementalEdit(
558-
offset: $0.range.lowerBound.utf8Offset,
559-
length: $0.length.utf8Length,
560-
replacementLength: $0.replacement.utf8.count
561-
)
562-
}
556+
fromSequential: edits
563557
)
564558
await syntaxTreeManager.registerEdit(
565559
preEditSnapshot: preEditSnapshot,

0 commit comments

Comments
 (0)