@volar/vscode 1.7.4 → 1.7.6

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.
@@ -1,7 +1,7 @@
1
1
  import * as path from 'typesafe-path';
2
2
  import * as vscode from 'vscode';
3
3
  import type { BaseLanguageClient } from 'vscode-languageclient';
4
- export declare function activate(cmd: string, context: vscode.ExtensionContext, client: BaseLanguageClient, shouldStatusBarShow: (document: vscode.TextDocument) => boolean, resolveStatusText: (text: string) => string, disableTakeOverMode: boolean, cdn?: string): Promise<vscode.Disposable>;
4
+ export declare function activate(cmd: string, context: vscode.ExtensionContext, client: BaseLanguageClient, shouldStatusBarShow: (document: vscode.TextDocument) => boolean, resolveStatusText: (text: string) => string, disableTakeOverMode: boolean): Promise<vscode.Disposable>;
5
5
  export declare function getTsdk(context: vscode.ExtensionContext): Promise<{
6
6
  tsdk: string | path.PosixPath;
7
7
  version: string | undefined;
@@ -5,7 +5,7 @@ const path = require("typesafe-path");
5
5
  const vscode = require("vscode");
6
6
  const common_1 = require("../common");
7
7
  const defaultTsdkPath = 'node_modules/typescript/lib';
8
- async function activate(cmd, context, client, shouldStatusBarShow, resolveStatusText, disableTakeOverMode, cdn = 'https://unpkg.com/') {
8
+ async function activate(cmd, context, client, shouldStatusBarShow, resolveStatusText, disableTakeOverMode) {
9
9
  const subscriptions = [];
10
10
  const statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right);
11
11
  statusBar.command = cmd;
@@ -24,7 +24,7 @@ async function activate(cmd, context, client, shouldStatusBarShow, resolveStatus
24
24
  useVSCodeTsdk: {
25
25
  label: (!tsdk.isWorkspacePath ? '• ' : '') + "Use VS Code's Version",
26
26
  description: vscodeTsdk.version,
27
- detail: vscodeTsdk.isWeb ? vscodeTsdk.path.replace('/node_modules/', cdn) : undefined,
27
+ detail: vscodeTsdk.isWeb ? vscodeTsdk.path : undefined,
28
28
  },
29
29
  useConfigWorkspaceTsdk: configTsdkPath && !vscodeTsdk.isWeb ? {
30
30
  label: (tsdk.isWorkspacePath ? '• ' : '') + 'Use Workspace Version',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/vscode",
3
- "version": "1.7.4",
3
+ "version": "1.7.6",
4
4
  "main": "out/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -13,7 +13,7 @@
13
13
  "directory": "packages/vscode"
14
14
  },
15
15
  "dependencies": {
16
- "@volar/language-server": "1.7.4",
16
+ "@volar/language-server": "1.7.6",
17
17
  "typesafe-path": "^0.2.2",
18
18
  "vscode-nls": "^5.2.0"
19
19
  },
@@ -21,5 +21,5 @@
21
21
  "@types/vscode": "latest",
22
22
  "vscode-languageclient": "latest"
23
23
  },
24
- "gitHead": "65ed950a3440d8abd6d189cea6ff48c0e23a6384"
24
+ "gitHead": "b2dbe05318c06658ae97a65f9bc6d1badc55a81b"
25
25
  }
@@ -1,3 +0,0 @@
1
- import * as vscode from 'vscode';
2
- import type { BaseLanguageClient } from 'vscode-languageclient';
3
- export declare function activate(cmd: string, clients: BaseLanguageClient[]): Promise<vscode.Disposable>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.activate = void 0;
4
- const vscode = require("vscode");
5
- const language_server_1 = require("@volar/language-server");
6
- async function activate(cmd, clients) {
7
- return vscode.commands.registerCommand(cmd, async () => {
8
- for (const client of clients) {
9
- await client.sendNotification(language_server_1.ReportStats.type);
10
- client.outputChannel.show();
11
- }
12
- });
13
- }
14
- exports.activate = activate;
15
- //# sourceMappingURL=serverStatus.js.map
@@ -1,3 +0,0 @@
1
- import * as vscode from 'vscode';
2
- import { BaseLanguageClient } from 'vscode-languageclient';
3
- export declare function activate(_cmd: string, client: BaseLanguageClient): Promise<vscode.Disposable>;
@@ -1,198 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.activate = void 0;
4
- const vscode = require("vscode");
5
- const vscode_languageclient_1 = require("vscode-languageclient");
6
- const language_server_1 = require("@volar/language-server");
7
- const source_map_1 = require("@volar/source-map");
8
- const scheme = 'volar-virtual-file';
9
- const mappingDecorationType = vscode.window.createTextEditorDecorationType({
10
- borderWidth: '1px',
11
- borderStyle: 'solid',
12
- overviewRulerColor: 'blue',
13
- overviewRulerLane: vscode.OverviewRulerLane.Right,
14
- light: {
15
- // this color will be used in light color themes
16
- borderColor: 'darkblue'
17
- },
18
- dark: {
19
- // this color will be used in dark color themes
20
- borderColor: 'lightblue'
21
- }
22
- });
23
- const mappingSelectionDecorationType = vscode.window.createTextEditorDecorationType({
24
- cursor: 'crosshair',
25
- light: {
26
- backgroundColor: 'lightblue'
27
- },
28
- dark: {
29
- backgroundColor: 'darkblue'
30
- }
31
- });
32
- async function activate(_cmd, client) {
33
- const subscriptions = [];
34
- subscriptions.push(vscode.languages.registerHoverProvider({ scheme }, {
35
- async provideHover(document, position, _token) {
36
- const maps = virtualUriToSourceMap.get(document.uri.toString());
37
- if (!maps)
38
- return;
39
- const data = [];
40
- for (const [sourceUri, _, map] of maps) {
41
- const source = map.toSourceOffset(document.offsetAt(position));
42
- if (source) {
43
- data.push({
44
- uri: sourceUri,
45
- mapping: source,
46
- });
47
- }
48
- }
49
- if (data.length === 0)
50
- return;
51
- return new vscode.Hover(data.map((data) => [
52
- data.uri,
53
- '',
54
- '',
55
- '```json',
56
- JSON.stringify(data.mapping, null, 2),
57
- '```',
58
- ].join('\n')));
59
- }
60
- }));
61
- subscriptions.push(vscode.languages.registerDefinitionProvider({ scheme }, {
62
- async provideDefinition(document, position, _token) {
63
- const stacks = virtualUriToStacks.get(document.uri.toString());
64
- if (!stacks)
65
- return;
66
- const offset = document.offsetAt(position);
67
- const stack = stacks.find(stack => stack.range[0] <= offset && offset <= stack.range[1]);
68
- if (!stack)
69
- return;
70
- const line = Number(stack.source.split(':').at(-2));
71
- const character = Number(stack.source.split(':').at(-1));
72
- const fileName = stack.source.split(':').slice(0, -2).join(':');
73
- const link = {
74
- originSelectionRange: new vscode.Range(document.positionAt(stack.range[0]), document.positionAt(stack.range[1])),
75
- targetUri: vscode.Uri.file(fileName),
76
- targetRange: new vscode.Range(line - 1, character - 1, line - 1, character - 1),
77
- };
78
- return [link];
79
- }
80
- }));
81
- const sourceUriToVirtualUris = new Map();
82
- const virtualUriToSourceEditor = new Map();
83
- const virtualUriToSourceMap = new Map();
84
- const virtualUriToStacks = new Map();
85
- const docChangeEvent = new vscode.EventEmitter();
86
- const virtualDocuments = new Map();
87
- let updateVirtualDocument;
88
- let updateDecorationsTimeout;
89
- subscriptions.push(vscode.window.onDidChangeActiveTextEditor(updateDecorations));
90
- subscriptions.push(vscode.window.onDidChangeTextEditorSelection(updateDecorations));
91
- subscriptions.push(vscode.window.onDidChangeVisibleTextEditors(updateDecorations));
92
- subscriptions.push(vscode.workspace.onDidChangeTextDocument(e => {
93
- if (sourceUriToVirtualUris.has(e.document.uri.toString())) {
94
- const virtualUris = sourceUriToVirtualUris.get(e.document.uri.toString());
95
- clearTimeout(updateVirtualDocument);
96
- updateVirtualDocument = setTimeout(() => {
97
- virtualUris?.forEach(uri => {
98
- docChangeEvent.fire(vscode.Uri.parse(uri));
99
- });
100
- }, 100);
101
- }
102
- }));
103
- subscriptions.push(vscode.workspace.registerTextDocumentContentProvider(scheme, {
104
- onDidChange: docChangeEvent.event,
105
- async provideTextDocumentContent(uri) {
106
- const fileName = uri.with({ scheme: 'file' }).fsPath;
107
- const requestEditor = virtualUriToSourceEditor.get(uri.toString());
108
- if (requestEditor) {
109
- const virtualFile = await client.sendRequest(language_server_1.GetVirtualFileRequest.type, { sourceFileUri: requestEditor.document.uri.toString(), virtualFileName: fileName });
110
- virtualUriToSourceMap.set(uri.toString(), []);
111
- Object.entries(virtualFile.mappings).forEach(([sourceUri, mappings]) => {
112
- const sourceEditor = vscode.window.visibleTextEditors.find(editor => editor.document.uri.toString() === sourceUri);
113
- if (sourceEditor) {
114
- virtualUriToSourceMap.get(uri.toString())?.push([
115
- sourceEditor.document.uri.toString(),
116
- sourceEditor.document.version,
117
- new source_map_1.SourceMap(mappings),
118
- ]);
119
- if (!sourceUriToVirtualUris.has(sourceUri)) {
120
- sourceUriToVirtualUris.set(sourceUri, new Set());
121
- }
122
- sourceUriToVirtualUris.get(sourceUri)?.add(uri.toString());
123
- }
124
- });
125
- virtualDocuments.set(uri.toString(), vscode_languageclient_1.TextDocument.create('', '', 0, virtualFile.content));
126
- virtualUriToStacks.set(uri.toString(), virtualFile.codegenStacks);
127
- clearTimeout(updateDecorationsTimeout);
128
- updateDecorationsTimeout = setTimeout(updateDecorations, 100);
129
- return virtualFile.content;
130
- }
131
- }
132
- }));
133
- return vscode.Disposable.from(...subscriptions);
134
- function updateDecorations() {
135
- for (const [virtualUri, sources] of virtualUriToSourceMap) {
136
- const virtualEditor = vscode.window.visibleTextEditors.find(editor => editor.document.uri.toString() === virtualUri);
137
- let virtualRanges1 = [];
138
- let virtualRanges2 = [];
139
- if (virtualEditor) {
140
- for (const [sourceUri, sourceVersion, map] of sources) {
141
- const sourceEditor = vscode.window.visibleTextEditors.find(editor => editor.document.uri.toString() === sourceUri);
142
- if (sourceEditor && sourceEditor.document.version === sourceVersion) {
143
- const mappingDecorationRanges = map.mappings.map(mapping => new vscode.Range(sourceEditor.document.positionAt(mapping.sourceRange[0]), sourceEditor.document.positionAt(mapping.sourceRange[1])));
144
- sourceEditor.setDecorations(mappingDecorationType, mappingDecorationRanges);
145
- virtualRanges1 = virtualRanges1.concat(map.mappings.map(mapping => new vscode.Range(getGeneratedPosition(virtualUri, mapping.generatedRange[0]), getGeneratedPosition(virtualUri, mapping.generatedRange[1]))));
146
- /**
147
- * selection
148
- */
149
- if (vscode.window.activeTextEditor) {
150
- const selection = vscode.window.activeTextEditor.selection;
151
- const startOffset = vscode.window.activeTextEditor.document.offsetAt(selection.start);
152
- sourceEditor.setDecorations(mappingSelectionDecorationType, []);
153
- if (vscode.window.activeTextEditor === sourceEditor) {
154
- const matchVirtualRanges = [...map.toGeneratedOffsets(startOffset)];
155
- sourceEditor.setDecorations(mappingSelectionDecorationType, matchVirtualRanges.map(mapped => new vscode.Range(sourceEditor.document.positionAt(mapped[1].sourceRange[0]), sourceEditor.document.positionAt(mapped[1].sourceRange[1]))));
156
- virtualRanges2 = virtualRanges2.concat(matchVirtualRanges.map(mapped => new vscode.Range(getGeneratedPosition(virtualUri, mapped[1].generatedRange[0]), getGeneratedPosition(virtualUri, mapped[1].generatedRange[1]))));
157
- const mapped = matchVirtualRanges.sort((a, b) => a[1].generatedRange[0] - b[1].generatedRange[0])[0];
158
- if (mapped) {
159
- virtualEditor.revealRange(new vscode.Range(getGeneratedPosition(virtualUri, mapped[1].generatedRange[0]), getGeneratedPosition(virtualUri, mapped[1].generatedRange[1])));
160
- }
161
- }
162
- else if (vscode.window.activeTextEditor === virtualEditor) {
163
- const matchSourceRanges = [...map.toSourceOffsets(startOffset)];
164
- sourceEditor.setDecorations(mappingSelectionDecorationType, matchSourceRanges.map(mapped => new vscode.Range(sourceEditor.document.positionAt(mapped[1].sourceRange[0]), sourceEditor.document.positionAt(mapped[1].sourceRange[1]))));
165
- virtualRanges2 = virtualRanges2.concat(matchSourceRanges.map(mapped => new vscode.Range(getGeneratedPosition(virtualUri, mapped[1].generatedRange[0]), getGeneratedPosition(virtualUri, mapped[1].generatedRange[1]))));
166
- const mapped = matchSourceRanges.sort((a, b) => a[1].sourceRange[0] - b[1].sourceRange[0])[0];
167
- if (mapped) {
168
- sourceEditor.revealRange(new vscode.Range(sourceEditor.document.positionAt(mapped[1].sourceRange[0]), sourceEditor.document.positionAt(mapped[1].sourceRange[1])));
169
- }
170
- }
171
- }
172
- else {
173
- sourceEditor.setDecorations(mappingSelectionDecorationType, []);
174
- }
175
- }
176
- }
177
- virtualEditor.setDecorations(mappingDecorationType, virtualRanges1);
178
- virtualEditor.setDecorations(mappingSelectionDecorationType, virtualRanges2);
179
- }
180
- else {
181
- for (const [sourceUri] of sources) {
182
- const sourceEditor = vscode.window.visibleTextEditors.find(editor => editor.document.uri.toString() === sourceUri);
183
- if (sourceEditor) {
184
- sourceEditor.setDecorations(mappingDecorationType, []);
185
- sourceEditor.setDecorations(mappingSelectionDecorationType, []);
186
- }
187
- }
188
- }
189
- }
190
- }
191
- function getGeneratedPosition(virtualUri, offset) {
192
- const document = virtualDocuments.get(virtualUri);
193
- const position = document.positionAt(offset);
194
- return new vscode.Position(position.line, position.character);
195
- }
196
- }
197
- exports.activate = activate;
198
- //# sourceMappingURL=showVirtualFiles.js.map