getCompletions method
This method is used to get completions at a specific position in the document.
This method is used internally by the CodeCrafter, calling this with appropriate parameters will returns a List of LspCompletion.
Implementation
Future<List<LspCompletion>> getCompletions(int line, int character) async {
List<LspCompletion> completion = [];
final response = await _sendRequest(
method: 'textDocument/completion',
params: _commonParams(line, character),
);
try {
final result = response['result'];
if (result == null) return completion;
final items = result['items'];
if (items == null || items is! List) return completion;
for (var item in items) {
final importUris = item['data']?['importUris'];
final List<String>? importUriList = importUris != null
? (importUris as List).map((e) => e.toString()).toList()
: null;
completion.add(
LspCompletion(
label: item['label'],
itemType: CompletionItemType.values.firstWhere(
(type) => type.value == item['kind'],
orElse: () => CompletionItemType.text,
),
importUri: importUriList,
reference: item["data"]?["ref"],
),
);
}
} on Exception catch (e) {
debugPrint("An Error Occured: $e");
}
return completion;
}