VSCode - 具有自定义语言的IntelliSense

时间:2015-07-08 10:39:55

标签: tokenize visual-studio-code extending

你好VS Code社区!

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

enter image description here

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

我对此缺乏经验并尝试学习;)我想这与tokenizer有关,但我不知道如何指定/排除注释和变量值。

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

此处相关代码:(仅用于学习目的,不打算侵犯版权)



/*---------------------------------------------------------
 * 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');
}
&#13;
&#13;
&#13;

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

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

1 个答案:

答案 0 :(得分:1)

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

看看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);
    });