applyCompletion function

bool applyCompletion(
  1. EditorViewState view,
  2. Option option
)

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