Skip to content

Commit 3bbaf83

Browse files
committed
Update to only use closure and case as focused range when it's more than 80 lines
1 parent 0540c2b commit 3bbaf83

File tree

4 files changed

+29
-9
lines changed

4 files changed

+29
-9
lines changed

Tool/Sources/FocusedCodeFinder/KnownLanguageFocusedCodeFinder.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public protocol KnownLanguageFocusedCodeFinderType: FocusedCodeFinderType {
5757

5858
func contextContainingNode(
5959
_ node: Node,
60-
textProvider: @escaping TextProvider
60+
textProvider: @escaping TextProvider,
61+
rangeConverter: @escaping RangeConverter
6162
) -> NodeInfo?
6263

6364
func createTextProviderAndRangeConverter(
@@ -92,7 +93,11 @@ public extension KnownLanguageFocusedCodeFinderType {
9293
var focusedNode: Node?
9394
while let node = contextInfo.nodes.first {
9495
contextInfo.nodes.removeFirst()
95-
let nodeInfo = contextContainingNode(node, textProvider: textProvider)
96+
let nodeInfo = contextContainingNode(
97+
node,
98+
textProvider: textProvider,
99+
rangeConverter: rangeConverter
100+
)
96101
if nodeInfo?.canBeUsedAsCodeRange ?? false {
97102
focusedNode = node
98103
break
@@ -126,7 +131,7 @@ public extension KnownLanguageFocusedCodeFinderType {
126131

127132
return .init(
128133
scope: scopeContexts.isEmpty ? .file : .scope(signature: scopeContexts),
129-
contextRange: contextRange,
134+
contextRange: contextRange,
130135
smallestContextRange: codeRange,
131136
focusedRange: focusedRange,
132137
focusedCode: code,
@@ -187,7 +192,11 @@ extension KnownLanguageFocusedCodeFinderType {
187192

188193
while let node = nodes.first {
189194
nodes.removeFirst()
190-
let context = contextContainingNode(node, textProvider: textProvider)
195+
let context = contextContainingNode(
196+
node,
197+
textProvider: textProvider,
198+
rangeConverter: rangeConverter
199+
)
191200

192201
if let context {
193202
contextRange = rangeConverter(context.node)

Tool/Sources/FocusedCodeFinder/ObjectiveC/ObjectiveCCodeFinder.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public class ObjectiveCFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
6565

6666
public func contextContainingNode(
6767
_ node: Node,
68-
textProvider: @escaping TextProvider
68+
textProvider: @escaping TextProvider,
69+
rangeConverter: @escaping RangeConverter
6970
) -> NodeInfo? {
7071
switch ObjectiveCNodeType(rawValue: node.nodeType ?? "") {
7172
case .classInterface, .categoryInterface:

Tool/Sources/FocusedCodeFinder/Swift/SwiftFocusedCodeFinder.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ public class SwiftFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
6262

6363
public func contextContainingNode(
6464
_ node: SyntaxProtocol,
65-
textProvider: @escaping TextProvider
65+
textProvider: @escaping TextProvider,
66+
rangeConverter: @escaping RangeConverter
6667
) -> NodeInfo? {
6768
func extractText(_ node: SyntaxProtocol) -> String {
6869
textProvider(node)
@@ -243,18 +244,19 @@ public class SwiftFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
243244

244245
case let node as ClosureExprSyntax:
245246
let signature = "closure"
247+
let range = rangeConverter(node)
246248

247249
return .init(
248250
node: node,
249251
signature: signature
250252
.split(omittingEmptySubsequences: false, whereSeparator: \.isNewline)
251253
.joined(separator: " "),
252-
name: "closure"
254+
name: "closure",
255+
canBeUsedAsCodeRange: range.lineCount > 80
253256
)
254257

255258
case let node as FunctionCallExprSyntax:
256259
let signature = "function call"
257-
258260
return .init(
259261
node: node,
260262
signature: signature
@@ -265,12 +267,15 @@ public class SwiftFocusedCodeFinder: KnownLanguageFocusedCodeFinder<
265267
)
266268

267269
case let node as SwitchCaseSyntax:
270+
let range = rangeConverter(node)
271+
268272
return .init(
269273
node: node,
270274
signature: node.trimmedDescription
271275
.split(omittingEmptySubsequences: false, whereSeparator: \.isNewline)
272276
.joined(separator: " "),
273-
name: "switch"
277+
name: "switch",
278+
canBeUsedAsCodeRange: range.lineCount > 80
274279
)
275280

276281
default:

Tool/Sources/SuggestionModel/ExportedFromLSP.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ public struct CursorRange: Codable, Hashable, Sendable, Equatable, CustomStringC
5252
return start.line == end.line
5353
}
5454

55+
/// The number of lines in the range.
56+
public var lineCount: Int {
57+
return end.line - start.line + 1
58+
}
59+
5560
public static func == (lhs: CursorRange, rhs: CursorRange) -> Bool {
5661
return lhs.start == rhs.start && lhs.end == rhs.end
5762
}

0 commit comments

Comments
 (0)