Skip to content

Commit 35d7a10

Browse files
committed
update
1 parent e7e3fdf commit 35d7a10

File tree

3 files changed

+61
-16
lines changed

3 files changed

+61
-16
lines changed

extensions/vscode/package.json

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,11 +286,32 @@
286286
"vue.server.includeLanguages": {
287287
"type": "array",
288288
"items": {
289-
"type": "string"
289+
"anyOf": [
290+
{
291+
"type": "string"
292+
},
293+
{
294+
"type": "object",
295+
"properties": {
296+
"language": {
297+
"type": "string"
298+
},
299+
"pattern": {
300+
"type": "string"
301+
}
302+
},
303+
"required": [
304+
"language"
305+
]
306+
}
307+
]
290308
},
291309
"default": [
292310
"vue",
293-
{ "pattern": "**/*.vue.md" }
311+
{
312+
"language": "markdown",
313+
"pattern": "**/*.vue.md"
314+
}
294315
],
295316
"markdownDescription": "%configuration.server.includeLanguages%"
296317
},

extensions/vscode/src/extension.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export = defineExtension(() => {
5454
const { stop } = watch(activeTextEditor, () => {
5555
if (
5656
!visibleTextEditors.value.some(
57-
editor => config.server.includeLanguages.includes(editor.document.languageId),
57+
editor => vscode.languages.match(getIncludeLanguages(), editor.document),
5858
)
5959
) {
6060
return;
@@ -125,7 +125,7 @@ export = defineExtension(() => {
125125

126126
volarLabs.addLanguageClient(client);
127127

128-
const selectors = config.server.includeLanguages;
128+
const selectors = getIncludeLanguages();
129129

130130
activateAutoInsertion(selectors, client);
131131
activateDocumentDropEdit(selectors, client);
@@ -151,6 +151,10 @@ export = defineExtension(() => {
151151
return volarLabs.extensionExports;
152152
});
153153

154+
function getIncludeLanguages() {
155+
return config.server.includeLanguages as lsp.DocumentSelector;
156+
}
157+
154158
function launch(serverPath: string, tsdk: string) {
155159
const args = ['--tsdk=' + tsdk];
156160
const client = new lsp.LanguageClient(
@@ -203,7 +207,7 @@ function launch(serverPath: string, tsdk: string) {
203207
return edits;
204208
},
205209
},
206-
documentSelector: config.server.includeLanguages,
210+
documentSelector: getIncludeLanguages(),
207211
markdown: {
208212
isTrusted: true,
209213
supportHtml: true,
@@ -295,13 +299,14 @@ function patchTypeScriptExtension() {
295299
const { publisher, name } = require('../package.json');
296300
const vueExtension = vscode.extensions.getExtension(`${publisher}.${name}`)!;
297301
const tsPluginName = 'vue-typescript-plugin-pack';
302+
const languages = getIncludeLanguages().map(lang => typeof lang === 'string' ? lang : lang.language);
298303

299304
vueExtension.packageJSON.contributes.typescriptServerPlugins = [
300305
{
301306
name: tsPluginName,
302307
enableForWorkspaceTypeScriptVersions: true,
303308
configNamespace: 'typescript',
304-
languages: config.server.includeLanguages,
309+
languages,
305310
},
306311
{
307312
name: 'vue-reactivity-analysis-plugin-pack',

extensions/vscode/src/generated-meta.ts

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// Meta info
55
export const publisher = 'Vue';
66
export const name = 'volar';
7-
export const version = '3.1.5';
7+
export const version = '3.1.8';
88
export const displayName = 'Vue (Official)';
99
export const description = 'Language Support for Vue';
1010
export const extensionId = `${publisher}.${name}`;
@@ -17,7 +17,7 @@ export type CommandKey =
1717
| 'vue.action.restartServer';
1818

1919
/**
20-
* Commands map registed by `Vue.volar`
20+
* Commands map registered by `Vue.volar`
2121
*/
2222
export const commands = {
2323
/**
@@ -32,6 +32,25 @@ export const commands = {
3232
actionRestartServer: 'vue.action.restartServer',
3333
} satisfies Record<string, CommandKey>;
3434

35+
/**
36+
* Type union of all languages
37+
*/
38+
export type LanguageKey =
39+
| 'vue'
40+
| 'markdown'
41+
| 'html'
42+
| 'jade';
43+
44+
/**
45+
* Languages map registed by `Vue.volar`
46+
*/
47+
export const languages = {
48+
vue: 'vue',
49+
markdown: 'markdown',
50+
html: 'html',
51+
jade: 'jade',
52+
} satisfies Record<string, LanguageKey>;
53+
3554
/**
3655
* Type union of all configs
3756
*/
@@ -67,7 +86,7 @@ export interface ConfigKeyTypeMap {
6786
'vue.editor.reactivityVisualization': boolean;
6887
'vue.editor.templateInterpolationDecorators': boolean;
6988
'vue.server.path': string | undefined;
70-
'vue.server.includeLanguages': string[];
89+
'vue.server.includeLanguages': unknown[];
7190
'vue.codeActions.askNewComponentName': boolean;
7291
'vue.suggest.componentNameCasing': 'preferKebabCase' | 'preferPascalCase' | 'alwaysKebabCase' | 'alwaysPascalCase';
7392
'vue.suggest.propNameCasing': 'preferKebabCase' | 'preferCamelCase' | 'alwaysKebabCase' | 'alwaysCamelCase';
@@ -128,7 +147,7 @@ export interface ConfigShorthandTypeMap {
128147
editorReactivityVisualization: boolean;
129148
editorTemplateInterpolationDecorators: boolean;
130149
serverPath: string | undefined;
131-
serverIncludeLanguages: string[];
150+
serverIncludeLanguages: unknown[];
132151
codeActionsAskNewComponentName: boolean;
133152
suggestComponentNameCasing: 'preferKebabCase' | 'preferPascalCase' | 'alwaysKebabCase' | 'alwaysPascalCase';
134153
suggestPropNameCasing: 'preferKebabCase' | 'preferCamelCase' | 'alwaysKebabCase' | 'alwaysCamelCase';
@@ -212,12 +231,12 @@ export const configs = {
212231
} as ConfigItem<'vue.server.path'>,
213232
/**
214233
* @key `vue.server.includeLanguages`
215-
* @default `["vue"]`
234+
* @default `["vue",{"language":"markdown","pattern":"**\/*.vue.md"}]`
216235
* @type `array`
217236
*/
218237
serverIncludeLanguages: {
219238
key: 'vue.server.includeLanguages',
220-
default: ['vue'],
239+
default: ['vue', { 'language': 'markdown', 'pattern': '**/*.vue.md' }],
221240
} as ConfigItem<'vue.server.includeLanguages'>,
222241
/**
223242
* @key `vue.codeActions.askNewComponentName`
@@ -389,7 +408,7 @@ export interface ScopedConfigKeyTypeMap {
389408
'editor.reactivityVisualization': boolean;
390409
'editor.templateInterpolationDecorators': boolean;
391410
'server.path': string | undefined;
392-
'server.includeLanguages': string[];
411+
'server.includeLanguages': unknown[];
393412
'codeActions.askNewComponentName': boolean;
394413
'suggest.componentNameCasing': 'preferKebabCase' | 'preferPascalCase' | 'alwaysKebabCase' | 'alwaysPascalCase';
395414
'suggest.propNameCasing': 'preferKebabCase' | 'preferCamelCase' | 'alwaysKebabCase' | 'alwaysCamelCase';
@@ -425,7 +444,7 @@ export const scopedConfigs = {
425444
'editor.reactivityVisualization': true,
426445
'editor.templateInterpolationDecorators': true,
427446
'server.path': undefined,
428-
'server.includeLanguages': ['vue'],
447+
'server.includeLanguages': ['vue', { 'language': 'markdown', 'pattern': '**/*.vue.md' }],
429448
'codeActions.askNewComponentName': true,
430449
'suggest.componentNameCasing': 'preferPascalCase',
431450
'suggest.propNameCasing': 'preferKebabCase',
@@ -459,7 +478,7 @@ export interface NestedConfigs {
459478
};
460479
'server': {
461480
'path': string | undefined;
462-
'includeLanguages': string[];
481+
'includeLanguages': unknown[];
463482
};
464483
'codeActions': {
465484
'askNewComponentName': boolean;
@@ -516,7 +535,7 @@ export interface NestedScopedConfigs {
516535
};
517536
'server': {
518537
'path': string | undefined;
519-
'includeLanguages': string[];
538+
'includeLanguages': unknown[];
520539
};
521540
'codeActions': {
522541
'askNewComponentName': boolean;

0 commit comments

Comments
 (0)