@vue/language-service 2.1.8 → 2.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js
CHANGED
|
@@ -30,6 +30,7 @@ const volar_service_typescript_twoslash_queries_1 = require("volar-service-types
|
|
|
30
30
|
const docCommentTemplate_1 = require("volar-service-typescript/lib/plugins/docCommentTemplate");
|
|
31
31
|
const syntactic_1 = require("volar-service-typescript/lib/plugins/syntactic");
|
|
32
32
|
const css_1 = require("./lib/plugins/css");
|
|
33
|
+
const vue_complete_define_assignment_1 = require("./lib/plugins/vue-complete-define-assignment");
|
|
33
34
|
const vue_autoinsert_dotvalue_1 = require("./lib/plugins/vue-autoinsert-dotvalue");
|
|
34
35
|
const vue_autoinsert_space_1 = require("./lib/plugins/vue-autoinsert-space");
|
|
35
36
|
const vue_directive_comments_1 = require("./lib/plugins/vue-directive-comments");
|
|
@@ -179,6 +180,7 @@ function getCommonLanguageServicePlugins(ts, getTsPluginClient) {
|
|
|
179
180
|
(0, vue_twoslash_queries_1.create)(getTsPluginClient),
|
|
180
181
|
(0, vue_document_links_1.create)(),
|
|
181
182
|
(0, vue_document_drop_1.create)(ts, getTsPluginClient),
|
|
183
|
+
(0, vue_complete_define_assignment_1.create)(),
|
|
182
184
|
(0, vue_autoinsert_dotvalue_1.create)(ts, getTsPluginClient),
|
|
183
185
|
(0, vue_autoinsert_space_1.create)(),
|
|
184
186
|
(0, vue_inlayhints_1.create)(ts),
|
|
@@ -2,6 +2,7 @@ import type { LanguageServiceContext, LanguageServicePlugin } from '@volar/langu
|
|
|
2
2
|
import type * as ts from 'typescript';
|
|
3
3
|
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
4
|
export declare function create(ts: typeof import('typescript'), getTsPluginClient?: (context: LanguageServiceContext) => typeof import('@vue/typescript-plugin/lib/client') | undefined): LanguageServicePlugin;
|
|
5
|
+
export declare function isTsDocument(document: TextDocument): boolean;
|
|
5
6
|
export declare function isCharacterTyping(document: TextDocument, change: {
|
|
6
7
|
text: string;
|
|
7
8
|
rangeOffset: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
|
+
exports.isTsDocument = isTsDocument;
|
|
4
5
|
exports.isCharacterTyping = isCharacterTyping;
|
|
5
6
|
exports.isBlacklistNode = isBlacklistNode;
|
|
6
7
|
const language_core_1 = require("@vue/language-core");
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create = create;
|
|
4
|
+
const language_core_1 = require("@vue/language-core");
|
|
5
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
6
|
+
const vue_autoinsert_dotvalue_1 = require("./vue-autoinsert-dotvalue");
|
|
7
|
+
function create() {
|
|
8
|
+
return {
|
|
9
|
+
name: 'vue-complete-define-assignment',
|
|
10
|
+
capabilities: {
|
|
11
|
+
completionProvider: {},
|
|
12
|
+
},
|
|
13
|
+
create(context) {
|
|
14
|
+
return {
|
|
15
|
+
isAdditionalCompletion: true,
|
|
16
|
+
async provideCompletionItems(document) {
|
|
17
|
+
if (!(0, vue_autoinsert_dotvalue_1.isTsDocument)(document)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const enabled = await context.env.getConfiguration?.('vue.complete.defineAssignment') ?? true;
|
|
21
|
+
if (!enabled) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const result = [];
|
|
25
|
+
const decoded = context.decodeEmbeddedDocumentUri(vscode_uri_1.URI.parse(document.uri));
|
|
26
|
+
const sourceScript = decoded && context.language.scripts.get(decoded[0]);
|
|
27
|
+
const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
|
|
28
|
+
if (!sourceScript || !virtualCode) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const root = sourceScript?.generated?.root;
|
|
32
|
+
if (!(root instanceof language_core_1.VueVirtualCode)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const codegen = language_core_1.tsCodegen.get(root._sfc);
|
|
36
|
+
const scriptSetup = root._sfc.scriptSetup;
|
|
37
|
+
const scriptSetupRanges = codegen?.scriptSetupRanges.get();
|
|
38
|
+
if (!scriptSetup || !scriptSetupRanges) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const mappings = [...context.language.maps.forEach(virtualCode)];
|
|
42
|
+
addDefineCompletionItem(scriptSetupRanges.props.define && {
|
|
43
|
+
exp: scriptSetupRanges.props.withDefaults ?? scriptSetupRanges.props.define.exp,
|
|
44
|
+
statement: scriptSetupRanges.props.define.statement
|
|
45
|
+
}, 'props');
|
|
46
|
+
addDefineCompletionItem(scriptSetupRanges.emits.define, 'emit');
|
|
47
|
+
addDefineCompletionItem(scriptSetupRanges.slots.define, 'slots');
|
|
48
|
+
return {
|
|
49
|
+
isIncomplete: false,
|
|
50
|
+
items: result
|
|
51
|
+
};
|
|
52
|
+
function addDefineCompletionItem(define, name) {
|
|
53
|
+
if (!define || define.exp.start !== define.statement.start) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let offset;
|
|
57
|
+
for (const [, map] of mappings) {
|
|
58
|
+
for (const [generatedOffset] of map.toGeneratedLocation(scriptSetup.startTagEnd + define.exp.start)) {
|
|
59
|
+
offset = generatedOffset;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (offset === undefined) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const pos = document.positionAt(offset);
|
|
67
|
+
result.push({
|
|
68
|
+
label: name,
|
|
69
|
+
kind: 6,
|
|
70
|
+
commitCharacters: ['.', ',', ';'],
|
|
71
|
+
additionalTextEdits: [{
|
|
72
|
+
newText: `const ${name} = `,
|
|
73
|
+
range: {
|
|
74
|
+
start: pos,
|
|
75
|
+
end: pos
|
|
76
|
+
}
|
|
77
|
+
}]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=vue-complete-define-assignment.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue/language-service",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"data",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"@volar/language-service": "~2.4.8",
|
|
22
22
|
"@volar/typescript": "~2.4.8",
|
|
23
23
|
"@vue/compiler-dom": "^3.5.0",
|
|
24
|
-
"@vue/language-core": "2.1.
|
|
24
|
+
"@vue/language-core": "2.1.10",
|
|
25
25
|
"@vue/shared": "^3.5.0",
|
|
26
|
-
"@vue/typescript-plugin": "2.1.
|
|
26
|
+
"@vue/typescript-plugin": "2.1.10",
|
|
27
27
|
"alien-signals": "^0.2.0",
|
|
28
28
|
"path-browserify": "^1.0.1",
|
|
29
29
|
"volar-service-css": "0.0.62",
|
|
@@ -43,6 +43,5 @@
|
|
|
43
43
|
"@types/path-browserify": "latest",
|
|
44
44
|
"@volar/kit": "~2.4.8",
|
|
45
45
|
"vscode-languageserver-protocol": "^3.17.5"
|
|
46
|
-
}
|
|
47
|
-
"gitHead": "25cccedc53e7361ed4e34296d6ecd43d7de2a095"
|
|
46
|
+
}
|
|
48
47
|
}
|