diff --git a/Sources/Runestone/Language/Internal/TreeSitter/TreeSitterTextPredicatesEvaluator.swift b/Sources/Runestone/Language/Internal/TreeSitter/TreeSitterTextPredicatesEvaluator.swift index 0720e894d..a2fe60df2 100644 --- a/Sources/Runestone/Language/Internal/TreeSitter/TreeSitterTextPredicatesEvaluator.swift +++ b/Sources/Runestone/Language/Internal/TreeSitter/TreeSitterTextPredicatesEvaluator.swift @@ -34,7 +34,8 @@ final class TreeSitterTextPredicatesEvaluator { #if DEBUG if !Self.previousUnsupportedPredicateNames.contains(parameters.name) { Self.previousUnsupportedPredicateNames.append(parameters.name) - print("Unsupported predicate '\(parameters.name)'. This message is only printed once and only when running in the debug configuration.") + print("Unsupported predicate '\(parameters.name)'." + + " This message is only printed once and only when running in the debug configuration.") } #endif return false diff --git a/Sources/Runestone/Library/TextEditHelper.swift b/Sources/Runestone/Library/TextEditHelper.swift index d741e7785..e6c308746 100644 --- a/Sources/Runestone/Library/TextEditHelper.swift +++ b/Sources/Runestone/Library/TextEditHelper.swift @@ -41,6 +41,7 @@ final class TextEditHelper { func string(byApplying batchReplaceSet: BatchReplaceSet) -> NSString { let sortedReplacements = batchReplaceSet.replacements.sorted { $0.range.lowerBound < $1.range.lowerBound } + // swiftlint:disable:next force_cast let mutableSubstring = stringView.string.mutableCopy() as! NSMutableString var totalChangeInLength = 0 var replacedRanges: [NSRange] = [] diff --git a/Sources/Runestone/TextView/LineController/LineController.swift b/Sources/Runestone/TextView/LineController/LineController.swift index 1d30be715..11fc77576 100644 --- a/Sources/Runestone/TextView/LineController/LineController.swift +++ b/Sources/Runestone/TextView/LineController/LineController.swift @@ -1,3 +1,4 @@ +// swiftlint:disable file_length import CoreGraphics import CoreText import UIKit diff --git a/Sources/Runestone/TextView/TextInput/TextInputView.swift b/Sources/Runestone/TextView/TextInput/TextInputView.swift index f5aef5922..a48ede1c6 100644 --- a/Sources/Runestone/TextView/TextInput/TextInputView.swift +++ b/Sources/Runestone/TextView/TextInput/TextInputView.swift @@ -1,5 +1,4 @@ // swiftlint:disable file_length - import UIKit protocol TextInputViewDelegate: AnyObject { @@ -43,9 +42,6 @@ final class TextInputView: UIView, UITextInput { } } private(set) var markedTextRange: UITextRange? { - set { - markedRange = (newValue as? IndexedRange)?.range - } get { if let markedRange = markedRange { return IndexedRange(markedRange) @@ -53,6 +49,9 @@ final class TextInputView: UIView, UITextInput { return nil } } + set { + markedRange = (newValue as? IndexedRange)?.range + } } var markedTextStyle: [NSAttributedString.Key: Any]? var beginningOfDocument: UITextPosition { @@ -485,12 +484,12 @@ final class TextInputView: UIView, UITextInput { private let lineMovementController: LineMovementController private let pageGuideController = PageGuideController() private var markedRange: NSRange? { - set { - layoutManager.markedRange = newValue - } get { return layoutManager.markedRange } + set { + layoutManager.markedRange = newValue + } } private var floatingCaretView: FloatingCaretView? private var insertionPointColorBeforeFloatingBegan: UIColor = .black @@ -965,9 +964,11 @@ extension TextInputView { guard newString != string else { return } + guard let oldString = stringView.string.copy() as? NSString else { + return + } timedUndoManager.endUndoGrouping() let oldSelectedRange = selectedRange - let oldString = stringView.string.copy() as! NSString string = newString timedUndoManager.beginUndoGrouping() timedUndoManager.setActionName(L10n.Undo.ActionName.replaceAll) diff --git a/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift b/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift index 3117ce5ca..2a936b374 100644 --- a/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift +++ b/Sources/Runestone/TreeSitter/TreeSitterPredicateMapper.swift @@ -25,7 +25,6 @@ enum TreeSitterPredicateMapper { default: let parameters = TreeSitterTextPredicate.UnsupportedParameters(name: predicate.name) textPredicates.append(.unsupported(parameters)) - break } } return MapResult(properties: properties, textPredicates: textPredicates) diff --git a/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift b/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift index cc00cf9ba..df03614b3 100644 --- a/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift +++ b/Sources/Runestone/TreeSitter/TreeSitterTextInput.swift @@ -32,7 +32,10 @@ final class TreeSitterTextInput { } } -private func read(payload: UnsafeMutableRawPointer?, byteIndex: UInt32, position: TSPoint, bytesRead: UnsafeMutablePointer?) -> UnsafePointer? { +private func read(payload: UnsafeMutableRawPointer?, + byteIndex: UInt32, + position: TSPoint, + bytesRead: UnsafeMutablePointer?) -> UnsafePointer? { let input: TreeSitterTextInput = Unmanaged.fromOpaque(payload!).takeUnretainedValue() if let result = input.callback(ByteCount(byteIndex), TreeSitterTextPoint(position)) { bytesRead?.pointee = result.length diff --git a/Tests/RunestoneTests/Mock/MockTreeSitterParserDelegate.swift b/Tests/RunestoneTests/Mock/MockTreeSitterParserDelegate.swift index cc186d830..248c9f3f5 100644 --- a/Tests/RunestoneTests/Mock/MockTreeSitterParserDelegate.swift +++ b/Tests/RunestoneTests/Mock/MockTreeSitterParserDelegate.swift @@ -15,7 +15,7 @@ final class MockTreeSitterParserDelegate: TreeSitterParserDelegate { func parser(_ parser: TreeSitterParser, bytesAt byteIndex: ByteCount) -> TreeSitterTextProviderResult? { let maxLength = stringView.string.byteCount - byteIndex - let length = min(2048, maxLength) + let length = min(2_048, maxLength) let byteRange = ByteRange(location: byteIndex, length: length) if let result = stringView.bytes(in: byteRange) { return TreeSitterTextProviderResult(bytes: result.bytes, length: UInt32(result.length.value))