VSCode - 具有自定义语言的 IntelliSense

VSCode - IntelliSense with custom languages

你好 VS Code 社区!

我目前正在使用自己的/自定义语言扩展 VS Code 编辑器。这比我想象的要容易,但现在我遇到了 IntelliSense 问题。


如您所见,VS Code 正在向我建议注释和字符串的内容,这对我来说是个大问题。

我对此没有经验,通过尝试学习 ;) 我想这与分词器有关,但我不知道如何指定/排除注释和变量值。

通常只建议声明的变量和给定的关键字

这里是相关代码:(仅供学习,无侵权之意)

/*---------------------------------------------------------
 * Copyright (C) Microsoft Corporation. All rights reserved.
 *--------------------------------------------------------*/
/// <reference path="../../declares.d.ts" />
'use strict';
define(["require", "exports", '../sqfDef', 'monaco-testing'], function (require, exports, languageDef, T) {
    var tokenizationSupport = T.createTokenizationSupport(languageDef.language);
    var tokenize = T.createTokenizeFromSupport(tokenizationSupport);
    var assertTokens = T.assertTokens;
    T.module('Syntax Highlighting - SQF');
}

是否有任何文档或有人可以向我解释如何将其从建议列表中排除?

编辑: 好的,我意识到您可以在 Def.js 中定义对象类型,因此没有必要在 Tests.js 中定义它们。但我的问题仍然存在。

由于目前没有编写自定义插件的文档,我们都通过逆向工程收集信息。

看看resources\app\plugins\vs.language.typescript\features\suggestSupport.js。在第 10 行,您会发现 this.excludeTokens = ['string', 'comment', 'numeric'];。 所以你需要写你自己的 suggestSupport.js 并注册到你的 languageMain.js.

您在第 58 行的 resources\app\plugins\vs.language.typescript\typescriptMain.js 中找到了一个设置示例:

    var suggestSupport = new SuggestSupport(ctx, client);
    monaco.Modes.SuggestSupport.register(MODE_ID, suggestSupport);
    return Configuration.load(MODE_ID, ctx.configurationService).then(function (config) {
        suggestSupport.setConfiguration(config);
    });