@@ -33,6 +33,7 @@ import { DebugAdapter, LaunchConfigType } from "./debugger/debugAdapter";
33
33
import { SwiftBuildStatus } from "./ui/SwiftBuildStatus" ;
34
34
import { SwiftToolchain } from "./toolchain/toolchain" ;
35
35
import { DiagnosticsManager } from "./DiagnosticsManager" ;
36
+ import { DocumentationManager } from "./documentation/DocumentationManager" ;
36
37
37
38
/**
38
39
* Context for whole workspace. Holds array of contexts for each workspace folder
@@ -49,10 +50,12 @@ export class WorkspaceContext implements vscode.Disposable {
49
50
public diagnostics : DiagnosticsManager ;
50
51
public subscriptions : vscode . Disposable [ ] ;
51
52
public commentCompletionProvider : CommentCompletionProviders ;
53
+ public documentation : DocumentationManager ;
52
54
private lastFocusUri : vscode . Uri | undefined ;
53
55
private initialisationFinished = false ;
54
56
55
57
private constructor (
58
+ extensionContext : vscode . ExtensionContext ,
56
59
public tempFolder : TemporaryFolder ,
57
60
public outputChannel : SwiftOutputChannel ,
58
61
public toolchain : SwiftToolchain
@@ -62,6 +65,7 @@ export class WorkspaceContext implements vscode.Disposable {
62
65
this . languageClientManager = new LanguageClientManager ( this ) ;
63
66
this . tasks = new TaskManager ( this ) ;
64
67
this . diagnostics = new DiagnosticsManager ( this ) ;
68
+ this . documentation = new DocumentationManager ( extensionContext , this ) ;
65
69
this . currentDocument = null ;
66
70
this . commentCompletionProvider = new CommentCompletionProviders ( ) ;
67
71
@@ -163,6 +167,7 @@ export class WorkspaceContext implements vscode.Disposable {
163
167
onChangeConfig ,
164
168
this . tasks ,
165
169
this . diagnostics ,
170
+ this . documentation ,
166
171
this . languageClientManager ,
167
172
this . outputChannel ,
168
173
this . statusItem ,
@@ -192,11 +197,12 @@ export class WorkspaceContext implements vscode.Disposable {
192
197
193
198
/** Get swift version and create WorkspaceContext */
194
199
static async create (
200
+ extensionContext : vscode . ExtensionContext ,
195
201
outputChannel : SwiftOutputChannel ,
196
202
toolchain : SwiftToolchain
197
203
) : Promise < WorkspaceContext > {
198
204
const tempFolder = await TemporaryFolder . create ( ) ;
199
- return new WorkspaceContext ( tempFolder , outputChannel , toolchain ) ;
205
+ return new WorkspaceContext ( extensionContext , tempFolder , outputChannel , toolchain ) ;
200
206
}
201
207
202
208
/**
@@ -224,11 +230,18 @@ export class WorkspaceContext implements vscode.Disposable {
224
230
contextKeys . currentTargetType = undefined ;
225
231
}
226
232
227
- // LSP can be configured per workspace to support reindexing
233
+ // Set context keys that depend on features from SourceKit-LSP
228
234
this . languageClientManager . useLanguageClient ( async client => {
229
235
const experimentalCaps = client . initializeResult ?. capabilities . experimental ;
236
+ if ( ! experimentalCaps ) {
237
+ contextKeys . supportsReindexing = false ;
238
+ contextKeys . supportsDocumentationLivePreview = false ;
239
+ return ;
240
+ }
230
241
contextKeys . supportsReindexing =
231
- experimentalCaps && experimentalCaps [ "workspace/triggerReindex" ] !== undefined ;
242
+ experimentalCaps [ "workspace/triggerReindex" ] !== undefined ;
243
+ contextKeys . supportsDocumentationLivePreview =
244
+ experimentalCaps [ "textDocument/convertDocumentation" ] !== undefined ;
232
245
} ) ;
233
246
234
247
setSnippetContextKey ( this ) ;
0 commit comments