@@ -321,7 +321,7 @@ extension PseudoCommandHandler {
321321 // recover selection range
322322
323323 if let selection = result. newSelection {
324- var range = convertCursorRangeToRange ( selection, in: result. content)
324+ var range = SourceEditor . convertCursorRangeToRange ( selection, in: result. content)
325325 if let value = AXValueCreate ( . cfRange, & range) {
326326 AXUIElementSetAttributeValue (
327327 focusElement,
@@ -373,7 +373,7 @@ extension PseudoCommandHandler {
373373 guard let selectionRange = focusElement. selectedTextRange else { return nil }
374374 let content = focusElement. value
375375 let split = content. breakLines ( appendLineBreakToLastLine: false )
376- let range = convertRangeToCursorRange ( selectionRange, in: content)
376+ let range = SourceEditor . convertRangeToCursorRange ( selectionRange, in: content)
377377 return ( content, split, [ range] , range. start)
378378 }
379379
@@ -418,55 +418,5 @@ extension PseudoCommandHandler {
418418 usesTabsForIndentation: usesTabsForIndentation
419419 )
420420 }
421-
422- func convertCursorRangeToRange(
423- _ cursorRange: CursorRange ,
424- in content: String
425- ) -> CFRange {
426- let lines = content. breakLines ( )
427- var countS = 0
428- var countE = 0
429- var range = CFRange ( location: 0 , length: 0 )
430- for (i, line) in lines. enumerated ( ) {
431- if i == cursorRange. start. line {
432- countS = countS + cursorRange. start. character
433- range. location = countS
434- }
435- if i == cursorRange. end. line {
436- countE = countE + cursorRange. end. character
437- range. length = max ( countE - range. location, 0 )
438- break
439- }
440- countS += line. count
441- countE += line. count
442- }
443- return range
444- }
445-
446- func convertRangeToCursorRange(
447- _ range: ClosedRange < Int > ,
448- in content: String
449- ) -> CursorRange {
450- let lines = content. breakLines ( )
451- guard !lines. isEmpty else { return CursorRange ( start: . zero, end: . zero) }
452- var countS = 0
453- var countE = 0
454- var cursorRange = CursorRange ( start: . zero, end: . outOfScope)
455- for (i, line) in lines. enumerated ( ) {
456- if countS <= range. lowerBound, range. lowerBound < countS + line. count {
457- cursorRange. start = . init( line: i, character: range. lowerBound - countS)
458- }
459- if countE <= range. upperBound, range. upperBound < countE + line. count {
460- cursorRange. end = . init( line: i, character: range. upperBound - countE)
461- break
462- }
463- countS += line. count
464- countE += line. count
465- }
466- if cursorRange. end == . outOfScope {
467- cursorRange. end = . init( line: lines. endIndex - 1 , character: lines. last? . count ?? 0 )
468- }
469- return cursorRange
470- }
471421}
472422
0 commit comments