initialize method

Future<void> initialize({
  1. Duration? timeout,
})

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});
  }
}