initialize method
Runs the initialize/initialized handshake and pushes the
configured settings. Throws LspRequestException on failure.
Implementation
Future<void> initialize({Duration? timeout}) async {
final result = await request('initialize', {
if (processId != null) 'processId': processId,
'rootUri': fileToUri(rootPath),
'rootPath': rootPath,
'capabilities': _clientCapabilities,
'initializationOptions': config.initOptions,
'workspaceFolders': [_workspaceFolder()],
}, timeout: timeout ?? requestTimeout);
if (result is! Map<String, dynamic>) {
throw const LspRequestException('Failed to initialize LSP: no response');
}
final capabilities = result['capabilities'];
if (capabilities is Map<String, dynamic>) {
serverCapabilities = capabilities;
}
status = LspClientStatus.ready;
notify('initialized', const <String, dynamic>{});
if (config.settings.isNotEmpty) {
notify('workspace/didChangeConfiguration', {'settings': config.settings});
}
}