vscode.languages.registerCompletionItemProvider не работает с 'уценкой' - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь написать расширение VS Code для предоставления поставщика завершения в уценке, но, следуя примеру от Microsoft из этого репозитория Кажется, что я не могу заставить работать что-то, когда я переключаю язык с От 'открытого текста' до 'markdown'.

С помощью следующего кода, с моим расширением, работающим в режиме отладки, в .txt файле, набрав "h", будут выдвигаться предложения о завершении, но он не будет запускать завершения когда в файле .md.

Я делаю здесь какую-то глупую ошибку?

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  console.log('activate');

  let _provideCompletionItems = {
    provideCompletionItems(
      document: vscode.TextDocument,
      position: vscode.Position,
      token: vscode.CancellationToken,
      context: vscode.CompletionContext
    ) {
      console.log('provide');
      const c = new vscode.CompletionItem('Hello World!');
      return [c];
    },
  };


  context.subscriptions.push(
    vscode.languages.registerCompletionItemProvider('plaintext', _provideCompletionItems)
  );

  context.subscriptions.push(
    vscode.languages.registerCompletionItemProvider('markdown', _provideCompletionItems)
  );

  const md = { scheme: 'file', language: 'markdown' };
  context.subscriptions.push(
    vscode.languages.registerCompletionItemProvider(md, _provideCompletionItems)
  );
}

1 Ответ

0 голосов
/ 15 февраля 2020

Хорошо, Мэтт Бирнер был прав в своем комментарии выше.

editor.quickSuggestions было false, потому что я был в файле уценки.

Я смог вызвать предложения с помощью editor.action.triggerSuggest связывания клавиш (по умолчанию ctrl+space).

Если кому-то интересно, вот как переопределить значение по умолчанию для уценки в вашем settings.json:

 "[markdown]":  {
    "editor.quickSuggestions": true
  },
...