mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
Drop dead code and a dependency!
This commit is contained in:
parent
7e941fe8ec
commit
5eac2d4c55
5
editors/code/package-lock.json
generated
5
editors/code/package-lock.json
generated
@ -1066,11 +1066,6 @@
|
|||||||
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
|
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"jsonc-parser": {
|
|
||||||
"version": "2.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
|
|
||||||
"integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="
|
|
||||||
},
|
|
||||||
"leven": {
|
"leven": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
"fix": " tsfmt -r && eslint -c .eslintrc.js --ext ts ./src --fix"
|
"fix": " tsfmt -r && eslint -c .eslintrc.js --ext ts ./src --fix"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jsonc-parser": "^2.2.1",
|
|
||||||
"node-fetch": "^2.6.0",
|
"node-fetch": "^2.6.0",
|
||||||
"vscode-languageclient": "7.0.0-next.1"
|
"vscode-languageclient": "7.0.0-next.1"
|
||||||
},
|
},
|
||||||
|
@ -1,129 +0,0 @@
|
|||||||
import * as fs from 'fs';
|
|
||||||
import * as jsonc from 'jsonc-parser';
|
|
||||||
import * as path from 'path';
|
|
||||||
import * as vscode from 'vscode';
|
|
||||||
|
|
||||||
export interface TextMateRuleSettings {
|
|
||||||
foreground?: string;
|
|
||||||
background?: string;
|
|
||||||
fontStyle?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ColorTheme {
|
|
||||||
private rules: Map<string, TextMateRuleSettings> = new Map();
|
|
||||||
|
|
||||||
static load(): ColorTheme {
|
|
||||||
// Find out current color theme
|
|
||||||
const themeName = vscode.workspace
|
|
||||||
.getConfiguration('workbench')
|
|
||||||
.get('colorTheme');
|
|
||||||
|
|
||||||
if (typeof themeName !== 'string') {
|
|
||||||
// console.warn('workbench.colorTheme is', themeName)
|
|
||||||
return new ColorTheme();
|
|
||||||
}
|
|
||||||
return loadThemeNamed(themeName);
|
|
||||||
}
|
|
||||||
|
|
||||||
static fromRules(rules: TextMateRule[]): ColorTheme {
|
|
||||||
const res = new ColorTheme();
|
|
||||||
for (const rule of rules) {
|
|
||||||
const scopes = typeof rule.scope === 'undefined'
|
|
||||||
? []
|
|
||||||
: typeof rule.scope === 'string'
|
|
||||||
? [rule.scope]
|
|
||||||
: rule.scope;
|
|
||||||
|
|
||||||
for (const scope of scopes) {
|
|
||||||
res.rules.set(scope, rule.settings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
lookup(scopes: string[]): TextMateRuleSettings {
|
|
||||||
let res: TextMateRuleSettings = {};
|
|
||||||
for (const scope of scopes) {
|
|
||||||
this.rules.forEach((value, key) => {
|
|
||||||
if (scope.startsWith(key)) {
|
|
||||||
res = mergeRuleSettings(res, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
mergeFrom(other: ColorTheme) {
|
|
||||||
other.rules.forEach((value, key) => {
|
|
||||||
const merged = mergeRuleSettings(this.rules.get(key), value);
|
|
||||||
this.rules.set(key, merged);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadThemeNamed(themeName: string): ColorTheme {
|
|
||||||
function isTheme(extension: vscode.Extension<unknown>): boolean {
|
|
||||||
return (
|
|
||||||
extension.extensionKind === vscode.ExtensionKind.UI &&
|
|
||||||
extension.packageJSON.contributes &&
|
|
||||||
extension.packageJSON.contributes.themes
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const themePaths: string[] = vscode.extensions.all
|
|
||||||
.filter(isTheme)
|
|
||||||
.flatMap(
|
|
||||||
ext => ext.packageJSON.contributes.themes
|
|
||||||
.filter((it: any) => (it.id || it.label) === themeName)
|
|
||||||
.map((it: any) => path.join(ext.extensionPath, it.path))
|
|
||||||
);
|
|
||||||
|
|
||||||
const res = new ColorTheme();
|
|
||||||
for (const themePath of themePaths) {
|
|
||||||
res.mergeFrom(loadThemeFile(themePath));
|
|
||||||
}
|
|
||||||
|
|
||||||
const globalCustomizations: any = vscode.workspace.getConfiguration('editor').get('tokenColorCustomizations');
|
|
||||||
res.mergeFrom(ColorTheme.fromRules(globalCustomizations?.textMateRules ?? []));
|
|
||||||
|
|
||||||
const themeCustomizations: any = vscode.workspace.getConfiguration('editor.tokenColorCustomizations').get(`[${themeName}]`);
|
|
||||||
res.mergeFrom(ColorTheme.fromRules(themeCustomizations?.textMateRules ?? []));
|
|
||||||
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadThemeFile(themePath: string): ColorTheme {
|
|
||||||
let text;
|
|
||||||
try {
|
|
||||||
text = fs.readFileSync(themePath, 'utf8');
|
|
||||||
} catch {
|
|
||||||
return new ColorTheme();
|
|
||||||
}
|
|
||||||
const obj = jsonc.parse(text);
|
|
||||||
const tokenColors: TextMateRule[] = obj?.tokenColors ?? [];
|
|
||||||
const res = ColorTheme.fromRules(tokenColors);
|
|
||||||
|
|
||||||
for (const include of obj?.include ?? []) {
|
|
||||||
const includePath = path.join(path.dirname(themePath), include);
|
|
||||||
res.mergeFrom(loadThemeFile(includePath));
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface TextMateRule {
|
|
||||||
scope: string | string[];
|
|
||||||
settings: TextMateRuleSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mergeRuleSettings(
|
|
||||||
defaultSetting: TextMateRuleSettings | undefined,
|
|
||||||
override: TextMateRuleSettings,
|
|
||||||
): TextMateRuleSettings {
|
|
||||||
return {
|
|
||||||
foreground: override.foreground ?? defaultSetting?.foreground,
|
|
||||||
background: override.background ?? defaultSetting?.background,
|
|
||||||
fontStyle: override.fontStyle ?? defaultSetting?.fontStyle,
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user