Это функция VSCode, называемая «предложения на основе слов» (см. Настройку "editor.wordBasedSuggestions"
). Предложения на основе слов предоставляются по умолчанию всякий раз, когда все другие зарегистрированные поставщики завершения не могут вернуть никаких результатов.
Я не знаю ни одного способа, чтобы предложения на основе слов были объединены с результатами вашего собственного поставщика. Это утверждение разработчика VSCode , кажется, подтверждает, что это невозможно:
Почему бы не включить сопоставление на основе строк, даже если есть поставщик завершения, возвращающий предложения?
Каждый провайдер получает ранг в зависимости от селектора, который он использует при регистрации. У провайдера, основанного на словах, обычно самый низкий балл, и правило гласит, что провайдеры с более низким рейтингом не спрашивают, дали ли провайдеры с более высоким рейтингом результат. Чтобы избежать дубликатов и спама.
Комментарий к документу registerCompletionItemProvider()
остается прежним, поэтому я не думаю, что с тех пор что-то изменилось. Возможно, вы могли бы открыть запрос функции для этого, но я не уверен, насколько высоки шансы его реализации.
Однако есть простой обходной путь: просто реализуйте предложения на основе слов самостоятельно. Если вы используете CompletionItemKind.Text
, он должен выглядеть так же, как встроенный поставщик VSCode. Я предполагаю, что для завершения вам все равно придется сканировать содержимое документа. В качестве дополнительного бонуса, это позволяет избежать дубликатов, как указано в выпуске.