applyCompletion function
Implementation
bool applyCompletion(EditorViewState view, Option option) {
final apply = option.completion.apply ?? option.completion.label;
final state = view.state;
final result = state.field(completionState)?.active.firstWhere(
(a) => identical(a.source, option.source),
orElse: () => ActiveSource(source: option.source, state: State.inactive),
);
if (result == null || result is! ActiveResult) return false;
if (apply is String) {
final spec = insertCompletionText(state, apply, result.from, result.to);
view.dispatch([
TransactionSpec(
changes: spec.changes,
selection: spec.selection,
annotations: [pickedCompletion.of(option.completion)],
),
]);
} else if (apply is void Function(EditorViewState, Completion, int, int)) {
apply(view, option.completion, result.from, result.to);
}
return true;
}