首页 > 解决方案 > vscode.languages.registerCompletionItemProvider 不适用于“降价”

问题描述

我正在尝试编写一个 VS Code 扩展来在 markdown 中提供一个完成提供程序,但是按照 Microsoft 从这个 repo的示例,当我将语言从“纯文本”切换到“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)
  );
}

标签: typescriptvisual-studio-codemarkdownvscode-extensions

解决方案


好的,Matt Bierner在上面的评论中是正确的。

editor.quickSuggestionsfalse因为我在一个降价文件中。

我能够使用editor.action.triggerSuggest键绑定(默认ctrl+space)触发建议。

如果有人想知道,这里是如何覆盖你的 markdown 的默认值settings.json

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

推荐阅读