如何通过我正在创建的扩展为我的自定义 类 提供智能感知自动完成?

How do I provide intellisense autocompletion for my custom classes, via an extension that I am creating?

我正在编写我的第一个 VSCode 扩展,但找不到有关如何为我在扩展中定义的对象创建自动完成的示例。例如,我可能有这样的 class:

class Foo {
    public aMemberVar = 'aMemberVar Member Variable';
    public aFuncName = 'aMemberFunc';
    public settings = {
      display: {
        alignment: 'left',
        height: 100,
        width: 100,
        theme: {
          on: true,
          color: 'blue'
        }
      }
    }


    function aMemberFunc() {
        print 'Inside `aMemberFunc()`';
    }
} 

现在,我希望安装了我的扩展程序的用户能够开始输入 Foo. 并且 VSCode 会自动向他显示方法和键class。

我已经为此创建了一个打字稿定义:

interface IFoo {
  aMemberVar: string;
  aFuncName: string;
  settings: {
    display: {
      alignment: string;
      height: number;
      width: number;
      theme: {
        on: boolean;
        color: string;
      };
    };
  };
  aMemberFunc(): void;
}

现在我的扩展不是针对 typescript,而是针对不同的语言,那么我如何在 typescript 以外的文件中显示自动完成?

您必须编写并注册一个CompletionItemProvider。在该提供商中,您必须使用可以为您提供完成候选人的工具。一些扩展使用可以提供该信息的外部工具,其他扩展通过解析可用源并创建一个提供所有必需符号信息的符号 table 来完成所有繁重的工作。