add helper for assembling long scope lists
This commit is contained in:
parent
2a78eb3f2d
commit
a1a0750d6a
|
@ -1,5 +1,5 @@
|
||||||
import embeddedLanguages from '../embeddedLanguages.mjs';
|
import embeddedLanguages from '../embeddedLanguages.mjs';
|
||||||
import {merge} from '../util.mjs';
|
import {merge, scopes} from '../util.mjs';
|
||||||
|
|
||||||
const elements = merge(embeddedLanguages.map(embeddedLanguage => ({
|
const elements = merge(embeddedLanguages.map(embeddedLanguage => ({
|
||||||
[`tagged-template-literal-block-${embeddedLanguage.id}`]: {
|
[`tagged-template-literal-block-${embeddedLanguage.id}`]: {
|
||||||
|
@ -7,18 +7,26 @@ const elements = merge(embeddedLanguages.map(embeddedLanguage => ({
|
||||||
end: '`',
|
end: '`',
|
||||||
beginCaptures: {
|
beginCaptures: {
|
||||||
1: {
|
1: {
|
||||||
name:
|
name: scopes(
|
||||||
'entity.name.function.tagged-template.js entity.name.embedded-language',
|
'entity.name.function.tagged-template.js',
|
||||||
|
'entity.name.embedded-source',
|
||||||
|
),
|
||||||
},
|
},
|
||||||
2: {
|
2: {
|
||||||
name:
|
name: scopes(
|
||||||
'string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin',
|
'string.template.js',
|
||||||
|
'punctuation.definition.string.template.begin.js',
|
||||||
|
'punctuation.definition.embedded-source.begin',
|
||||||
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
endCaptures: {
|
endCaptures: {
|
||||||
0: {
|
0: {
|
||||||
name:
|
name: scopes(
|
||||||
'string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end',
|
'string.template.js',
|
||||||
|
'punctuation.definition.string.template.end.js',
|
||||||
|
'punctuation.definition.embedded-source.end',
|
||||||
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
contentName: embeddedLanguage.embedScopeBlock,
|
contentName: embeddedLanguage.embedScopeBlock,
|
||||||
|
|
4
util.mts
4
util.mts
|
@ -4,7 +4,7 @@ export type Overwrite<T, U> = {
|
||||||
: never;
|
: never;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AllMerged<Objects extends any[]> = Objects extends
|
type AllMerged<Objects extends any[]> = Objects extends
|
||||||
[infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]>
|
[infer T, infer U, ...infer Rest] ? AllMerged<[Overwrite<T, U>, ...Rest]>
|
||||||
: Objects extends [infer T, ...infer Rest] ? T
|
: Objects extends [infer T, ...infer Rest] ? T
|
||||||
: Objects extends (infer Rest)[] ? Rest
|
: Objects extends (infer Rest)[] ? Rest
|
||||||
|
@ -12,3 +12,5 @@ export type AllMerged<Objects extends any[]> = Objects extends
|
||||||
|
|
||||||
export const merge = <T extends any[]>(objects: T): AllMerged<T> =>
|
export const merge = <T extends any[]>(objects: T): AllMerged<T> =>
|
||||||
Object.assign(Object.create(null), ...objects);
|
Object.assign(Object.create(null), ...objects);
|
||||||
|
|
||||||
|
export const scopes = (...scopes: string[]) => scopes.join(' ');
|
||||||
|
|
Loading…
Reference in a new issue