首页 > 解决方案 > 语义突出显示在我的 VS Code 扩展中不起作用

问题描述

我按照此处的说明在我的 VS Code 扩展上实现语义突出显示。这是我写的代码:

MySemanticTokenProvider.ts

import * as vscode from 'vscode';

const tokenTypes = ['variable'];
const tokenModifiers = ['declaration'];
export const legend = new vscode.SemanticTokensLegend(tokenTypes, tokenModifiers);

export const provider: vscode.DocumentSemanticTokensProvider = {
    provideDocumentSemanticTokens(document: vscode.TextDocument): vscode.ProviderResult<vscode.SemanticTokens> {
      // analyze the document and return semantic tokens 
      const tokensBuilder = new vscode.SemanticTokensBuilder(legend);
      // highlight the characters from position 1, 1 to position 1, 5
      tokensBuilder.push(
        new vscode.Range(new vscode.Position(1, 1), new vscode.Position(1, 5)),
        'variable',
        ['declaration']
      );
      return tokensBuilder.build();
    }
};

export const documentSelector = { language: 'mylanguage', scheme: 'file' };

settings.json

{
    "editor.semanticHighlighting.enabled": "configuredByTheme"
}

mylanguagetheme.json

{
    "name": "mylanguage",
    "type": "light",
    ...
    "semanticHighlighting": true,
    "semanticTokenColors": {
        "variable.declaration:mylanguage": {
            "foreground": "#0f8f90"
    }
}

extension.ts

import * as vscode from 'vscode';
import {legend, provider, documentSelector} from './MySemanticTokenProvider';
...
context.subscriptions.push(
    vscode.languages.registerDocumentSemanticTokensProvider(documentSelector, provider, legend)
);

根据我的代码,我希望编辑器中从位置 (1, 1) 到位置 (1, 5) 的字符被突出显示;但是,语义突出显示不起作用。我该如何解决这个问题?

标签: typescriptvisual-studio-codevscode-extensions

解决方案


推荐阅读