另外你的 color 部分代码可以用 registerColorProvider,你可以借鉴下
/** 添加 color 支持 */
function addColorSupport(context: vscode.ExtensionContext): void {
// cc.color 颜色提示
const colorProvider = vscode.languages.registerColorProvider(
config.languageSS,
{
provideDocumentColors(
document: vscode.TextDocument,
token: vscode.CancellationToken
): vscode.ColorInformation[] {
let resultAS: vscode.ColorInformation[] = [];
for (let kN = 0, lenN = document.lineCount; kN < lenN; ++kN) {
let lineS = document.lineAt(kN).text;
for (let v2 of lineS.matchAll(/color\([\d ,]+\)/g)) {
let rgbaNS = v2[0]
.slice(6, v2[0].length - 1)
.split(",")
.map((vS) => Number(vS.trim()) / 255);
resultAS.push({
color: new vscode.Color(
rgbaNS[0],
rgbaNS[1],
rgbaNS[2],
rgbaNS[3] ?? 0
),
range: new vscode.Range(
new vscode.Position(kN, v2.index!),
new vscode.Position(kN, v2.index! + v2[0].length)
),
});
}
}
return resultAS;
},
provideColorPresentations(
color: vscode.Color,
context: { document: vscode.TextDocument; range: vscode.Range },
token: vscode.CancellationToken
): vscode.ColorPresentation[] {
return [
{
label: `color(${Math.round(color.red * 255)}, ${Math.round(
color.green * 255
)}, ${Math.round(color.blue * 255)}, ${Math.round(
color.alpha * 255
)})`,
},
];
},
}
);
context.subscriptions.push(colorProvider);
}
其他部分功能就不贴了