1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
struct CompletionOptions {
private static let defaultMaxResults: Int = 200
/// Whether the label and type name in the code completion result should be annotated XML or plain text.
let annotateResults: Bool
/// Whether object literals should be included in the code completion results.
let includeObjectLiterals: Bool
/// Whether initializer calls should be included in top-level completions.
let addInitsToTopLevel: Bool
/// If a function has defaulted arguments, whether we should produce two results (one without any defaulted arguments
/// and one with all defaulted arguments) or only one (with all defaulted arguments).
let addCallWithNoDefaultArgs: Bool
/// Whether to include the semantic components computed by completion sorting in the results.
let includeSemanticComponents: Bool
init(
annotateResults: Bool = false,
includeObjectLiterals: Bool = false,
addInitsToTopLevel: Bool = false,
addCallWithNoDefaultArgs: Bool = true,
includeSemanticComponents: Bool = false
) {
self.annotateResults = annotateResults
self.includeObjectLiterals = includeObjectLiterals
self.addInitsToTopLevel = addInitsToTopLevel
self.addCallWithNoDefaultArgs = addCallWithNoDefaultArgs
self.includeSemanticComponents = includeSemanticComponents
}
//// The maximum number of results we should return if the client requested `input` results.
static func maxResults(input: Int?) -> Int {
guard let maxResults = input, maxResults != 0 else {
return defaultMaxResults
}
if maxResults < 0 {
return Int.max // unlimited
}
return maxResults
}
}
|