@volar/monaco 1.11.0 → 2.0.0-alpha.0

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/README.md CHANGED
@@ -59,7 +59,7 @@ self.onmessage = () => {
59
59
  + },
60
60
  },
61
61
  + typescript: {
62
- + module: ts as any,
62
+ + module: ts,
63
63
  + compilerOptions: {
64
64
  + // ...tsconfig options
65
65
  + },
package/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export * from './lib/editor';
2
- export * from './lib/languages';
3
- //# sourceMappingURL=index.d.ts.map
1
+ export * from './lib/editor.js';
2
+ export * from './lib/languages.js';
package/index.js CHANGED
@@ -1,19 +1,3 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./lib/editor"), exports);
18
- __exportStar(require("./lib/languages"), exports);
1
+ export * from './lib/editor.js';
2
+ export * from './lib/languages.js';
19
3
  //# sourceMappingURL=index.js.map
package/lib/editor.d.ts CHANGED
@@ -1,7 +1,4 @@
1
1
  import type { LanguageService } from '@volar/language-service';
2
- import type { editor as _editor, IDisposable, Uri } from 'monaco-editor-core';
3
- export declare namespace editor {
4
- function activateMarkers(worker: _editor.MonacoWebWorker<LanguageService>, languages: string[], markersOwn: string, getSyncUris: () => Uri[], editor: typeof import('monaco-editor-core').editor): IDisposable;
5
- function activateAutoInsertion(worker: _editor.MonacoWebWorker<LanguageService>, languages: string[], getSyncUris: () => Uri[], editor: typeof import('monaco-editor-core').editor): IDisposable;
6
- }
7
- //# sourceMappingURL=editor.d.ts.map
2
+ import type { editor, IDisposable, MonacoEditor, Uri } from 'monaco-types';
3
+ export declare function activateMarkers(worker: editor.MonacoWebWorker<LanguageService>, languages: string[], markersOwn: string, getSyncUris: () => Uri[], editor: MonacoEditor['editor']): IDisposable;
4
+ export declare function activateAutoInsertion(worker: editor.MonacoWebWorker<LanguageService>, languages: string[], getSyncUris: () => Uri[], editor: MonacoEditor['editor']): IDisposable;
package/lib/editor.js CHANGED
@@ -1,167 +1,154 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.editor = void 0;
4
- const markers_1 = require("./utils/markers");
5
- const protocol2monaco = require("./utils/protocol2monaco");
6
- const monaco2protocol = require("./utils/monaco2protocol");
7
- var editor;
8
- (function (editor_1) {
9
- function activateMarkers(worker, languages, markersOwn, getSyncUris, editor) {
10
- const disposables = [];
11
- const listener = new Map();
12
- disposables.push(editor.onDidCreateModel((model) => hostingMarkers(model)), editor.onWillDisposeModel(stopHostingMarkers), editor.onDidChangeModelLanguage((event) => {
13
- stopHostingMarkers(event.model);
14
- hostingMarkers(event.model);
15
- }), {
1
+ import { fromPosition, fromRange, toMarkerData, toTextEdit } from 'monaco-languageserver-types';
2
+ import { markers } from './markers.js';
3
+ export function activateMarkers(worker, languages, markersOwn, getSyncUris, editor) {
4
+ const disposables = [];
5
+ const listener = new Map();
6
+ disposables.push(editor.onDidCreateModel((model) => hostingMarkers(model)), editor.onWillDisposeModel(stopHostingMarkers), editor.onDidChangeModelLanguage((event) => {
7
+ stopHostingMarkers(event.model);
8
+ hostingMarkers(event.model);
9
+ }), {
10
+ dispose: () => {
11
+ for (const model of editor.getModels()) {
12
+ stopHostingMarkers(model);
13
+ }
14
+ }
15
+ });
16
+ for (const model of editor.getModels()) {
17
+ hostingMarkers(model);
18
+ }
19
+ return { dispose: () => disposables.forEach((d) => d.dispose()) };
20
+ function stopHostingMarkers(model) {
21
+ editor.setModelMarkers(model, markersOwn, []);
22
+ const key = model.uri.toString();
23
+ if (listener.has(key)) {
24
+ listener.get(key)?.dispose();
25
+ listener.delete(key);
26
+ }
27
+ }
28
+ function hostingMarkers(model) {
29
+ if (!languages.includes(model.getLanguageId?.() ?? model.getModeId?.())) {
30
+ return;
31
+ }
32
+ let timer;
33
+ const changeSubscription = model.onDidChangeContent(() => {
34
+ clearTimeout(timer);
35
+ timer = setTimeout(() => doValidation(model), 250);
36
+ });
37
+ const visibleSubscription = model.onDidChangeAttached(() => {
38
+ if (model.isAttachedToEditor()) {
39
+ doValidation(model);
40
+ }
41
+ else {
42
+ editor.setModelMarkers(model, markersOwn, []);
43
+ }
44
+ });
45
+ listener.set(model.uri.toString(), {
16
46
  dispose: () => {
17
- for (const model of editor.getModels()) {
18
- stopHostingMarkers(model);
19
- }
47
+ changeSubscription.dispose();
48
+ visibleSubscription.dispose();
49
+ clearTimeout(timer);
20
50
  }
21
51
  });
22
- for (const model of editor.getModels()) {
23
- hostingMarkers(model);
52
+ doValidation(model);
53
+ }
54
+ async function doValidation(model) {
55
+ if (model.isDisposed()) {
56
+ return;
24
57
  }
25
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
26
- function stopHostingMarkers(model) {
27
- editor.setModelMarkers(model, markersOwn, []);
28
- const key = model.uri.toString();
29
- if (listener.has(key)) {
30
- listener.get(key)?.dispose();
31
- listener.delete(key);
32
- }
58
+ if (!model.isAttachedToEditor()) {
59
+ return;
33
60
  }
34
- function hostingMarkers(model) {
35
- if (!languages.includes(model.getLanguageId?.() ?? model.getModeId?.())) {
36
- return;
61
+ const version = model.getVersionId();
62
+ const languageService = await worker.withSyncedResources(getSyncUris());
63
+ const diagnostics = await languageService.doValidation(model.uri.toString(), 'all');
64
+ if (model.getVersionId() !== version) {
65
+ return;
66
+ }
67
+ const result = diagnostics.map(error => {
68
+ const marker = toMarkerData(error);
69
+ markers.set(marker, error);
70
+ return marker;
71
+ });
72
+ editor.setModelMarkers(model, markersOwn, result);
73
+ }
74
+ }
75
+ export function activateAutoInsertion(worker, languages, getSyncUris, editor) {
76
+ const disposables = [];
77
+ const listener = new Map();
78
+ let timeout;
79
+ disposables.push(editor.onDidCreateModel((model) => hostingAutoInsertion(model)), editor.onWillDisposeModel(stopHostingAutoInsertion), editor.onDidChangeModelLanguage((event) => {
80
+ stopHostingAutoInsertion(event.model);
81
+ hostingAutoInsertion(event.model);
82
+ }), {
83
+ dispose: () => {
84
+ for (const disposable of listener.values()) {
85
+ disposable.dispose();
37
86
  }
38
- let timer;
39
- const changeSubscription = model.onDidChangeContent(() => {
40
- clearTimeout(timer);
41
- timer = setTimeout(() => doValidation(model), 250);
42
- });
43
- const visibleSubscription = model.onDidChangeAttached(() => {
44
- if (model.isAttachedToEditor()) {
45
- doValidation(model);
46
- }
47
- else {
48
- editor.setModelMarkers(model, markersOwn, []);
49
- }
50
- });
51
- listener.set(model.uri.toString(), {
52
- dispose: () => {
53
- changeSubscription.dispose();
54
- visibleSubscription.dispose();
55
- clearTimeout(timer);
56
- }
57
- });
58
- doValidation(model);
87
+ listener.clear();
88
+ }
89
+ });
90
+ for (const model of editor.getModels()) {
91
+ hostingAutoInsertion(model);
92
+ }
93
+ return { dispose: () => disposables.forEach((d) => d.dispose()) };
94
+ function stopHostingAutoInsertion(model) {
95
+ if (listener.has(model)) {
96
+ listener.get(model)?.dispose();
97
+ listener.delete(model);
59
98
  }
60
- async function doValidation(model) {
99
+ }
100
+ function hostingAutoInsertion(model) {
101
+ if (!languages.includes(model.getLanguageId?.() ?? model.getModeId?.())) {
102
+ return;
103
+ }
104
+ listener.set(model, model.onDidChangeContent((e) => {
61
105
  if (model.isDisposed()) {
62
106
  return;
63
107
  }
64
108
  if (!model.isAttachedToEditor()) {
65
109
  return;
66
110
  }
67
- const version = model.getVersionId();
68
- const languageService = await worker.withSyncedResources(getSyncUris());
69
- const diagnostics = await languageService.doValidation(model.uri.toString(), 'all');
70
- if (model.getVersionId() !== version) {
111
+ if (e.changes.length === 0 || e.isUndoing || e.isRedoing) {
71
112
  return;
72
113
  }
73
- const result = diagnostics.map(error => {
74
- const marker = protocol2monaco.asMarkerData(error);
75
- markers_1.markers.set(marker, error);
76
- return marker;
77
- });
78
- editor.setModelMarkers(model, markersOwn, result);
79
- }
114
+ const lastChange = e.changes[e.changes.length - 1];
115
+ doAutoInsert(model, lastChange);
116
+ }));
80
117
  }
81
- editor_1.activateMarkers = activateMarkers;
82
- function activateAutoInsertion(worker, languages, getSyncUris, editor) {
83
- const disposables = [];
84
- const listener = new Map();
85
- let timeout;
86
- disposables.push(editor.onDidCreateModel((model) => hostingAutoInsertion(model)), editor.onWillDisposeModel(stopHostingAutoInsertion), editor.onDidChangeModelLanguage((event) => {
87
- stopHostingAutoInsertion(event.model);
88
- hostingAutoInsertion(event.model);
89
- }), {
90
- dispose: () => {
91
- for (const disposable of listener.values()) {
92
- disposable.dispose();
93
- }
94
- listener.clear();
95
- }
96
- });
97
- for (const model of editor.getModels()) {
98
- hostingAutoInsertion(model);
118
+ async function doAutoInsert(model, lastChange) {
119
+ if (timeout) {
120
+ clearTimeout(timeout);
121
+ timeout = undefined;
99
122
  }
100
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
101
- function stopHostingAutoInsertion(model) {
102
- if (listener.has(model)) {
103
- listener.get(model)?.dispose();
104
- listener.delete(model);
105
- }
106
- }
107
- function hostingAutoInsertion(model) {
108
- if (!languages.includes(model.getLanguageId?.() ?? model.getModeId?.())) {
109
- return;
110
- }
111
- listener.set(model, model.onDidChangeContent((e) => {
112
- if (model.isDisposed()) {
113
- return;
114
- }
115
- if (!model.isAttachedToEditor()) {
123
+ const version = model.getVersionId();
124
+ timeout = setTimeout(() => {
125
+ (async () => {
126
+ if (model.getVersionId() !== version) {
116
127
  return;
117
128
  }
118
- if (e.changes.length === 0 || e.isUndoing || e.isRedoing) {
129
+ const languageService = await worker.withSyncedResources(getSyncUris());
130
+ const edit = await languageService.doAutoInsert(model.uri.toString(), fromPosition({
131
+ lineNumber: lastChange.range.startLineNumber,
132
+ column: lastChange.range.startColumn + lastChange.text.length,
133
+ }), {
134
+ range: fromRange(lastChange.range),
135
+ text: lastChange.text,
136
+ });
137
+ if (model.getVersionId() !== version) {
119
138
  return;
120
139
  }
121
- const lastChange = e.changes[e.changes.length - 1];
122
- doAutoInsert(model, lastChange);
123
- }));
124
- }
125
- async function doAutoInsert(model, lastChange) {
126
- if (timeout) {
127
- clearTimeout(timeout);
128
- timeout = undefined;
129
- }
130
- const version = model.getVersionId();
131
- timeout = setTimeout(() => {
132
- (async () => {
133
- if (model.getVersionId() !== version) {
134
- return;
135
- }
136
- const languageService = await worker.withSyncedResources(getSyncUris());
137
- const edit = await languageService.doAutoInsert(model.uri.toString(), monaco2protocol.asPosition({
138
- lineNumber: lastChange.range.startLineNumber,
139
- column: lastChange.range.startColumn + lastChange.text.length,
140
- }), {
141
- lastChange: {
142
- range: monaco2protocol.asRange(lastChange.range),
143
- rangeLength: lastChange.rangeLength,
144
- text: lastChange.text,
145
- rangeOffset: lastChange.rangeOffset,
146
- },
147
- });
148
- if (model.getVersionId() !== version) {
149
- return;
140
+ const codeEditor = editor.getEditors().find((e) => e.getModel() === model);
141
+ if (codeEditor && edit && model.getVersionId() === version) {
142
+ if (typeof edit === 'string') {
143
+ codeEditor?.getContribution('snippetController2')?.insert(edit);
150
144
  }
151
- const codeEditor = editor.getEditors().find((e) => e.getModel() === model);
152
- if (codeEditor && edit && model.getVersionId() === version) {
153
- if (typeof edit === 'string') {
154
- codeEditor?.getContribution('snippetController2')?.insert(edit);
155
- }
156
- else {
157
- model.pushEditOperations([], [protocol2monaco.asTextEdit(edit)], () => []);
158
- }
145
+ else {
146
+ model.pushEditOperations([], [toTextEdit(edit)], () => []);
159
147
  }
160
- })();
161
- timeout = undefined;
162
- }, 100);
163
- }
148
+ }
149
+ })();
150
+ timeout = undefined;
151
+ }, 100);
164
152
  }
165
- editor_1.activateAutoInsertion = activateAutoInsertion;
166
- })(editor || (exports.editor = editor = {}));
153
+ }
167
154
  //# sourceMappingURL=editor.js.map
@@ -1,10 +1,3 @@
1
- import type { editor, languages as _languages, IDisposable, Uri } from 'monaco-editor-core';
2
1
  import type { LanguageService } from '@volar/language-service';
3
- export declare namespace languages {
4
- /**
5
- * @deprecated Use `registerProviders` instead.
6
- */
7
- const registerProvides: typeof registerProviders;
8
- function registerProviders(worker: editor.MonacoWebWorker<LanguageService>, language: _languages.LanguageSelector, getSyncUris: () => Uri[], languages: typeof import('monaco-editor-core').languages): Promise<IDisposable>;
9
- }
10
- //# sourceMappingURL=languages.d.ts.map
2
+ import type { IDisposable, MonacoEditor, Uri, editor, languages } from 'monaco-types';
3
+ export declare function registerProviders(worker: editor.MonacoWebWorker<LanguageService>, language: languages.LanguageSelector, getSyncUris: () => Uri[], languages: MonacoEditor['languages']): Promise<IDisposable>;
package/lib/languages.js CHANGED
@@ -1,43 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.languages = void 0;
4
- const provider_1 = require("./utils/provider");
5
- var languages;
6
- (function (languages_1) {
7
- /**
8
- * @deprecated Use `registerProviders` instead.
9
- */
10
- languages_1.registerProvides = registerProviders;
11
- async function registerProviders(worker, language, getSyncUris, languages) {
12
- const provider = await (0, provider_1.createLanguageFeaturesProvider)(worker, getSyncUris);
13
- const disposables = [
14
- languages.registerHoverProvider(language, provider),
15
- languages.registerReferenceProvider(language, provider),
16
- languages.registerRenameProvider(language, provider),
17
- languages.registerSignatureHelpProvider(language, provider),
18
- languages.registerDocumentSymbolProvider(language, provider),
19
- languages.registerDocumentHighlightProvider(language, provider),
20
- languages.registerLinkedEditingRangeProvider(language, provider),
21
- languages.registerDefinitionProvider(language, provider),
22
- languages.registerImplementationProvider(language, provider),
23
- languages.registerTypeDefinitionProvider(language, provider),
24
- languages.registerCodeLensProvider(language, provider),
25
- languages.registerCodeActionProvider(language, provider),
26
- languages.registerDocumentFormattingEditProvider(language, provider),
27
- languages.registerDocumentRangeFormattingEditProvider(language, provider),
28
- languages.registerOnTypeFormattingEditProvider(language, provider),
29
- languages.registerLinkProvider(language, provider),
30
- languages.registerCompletionItemProvider(language, provider),
31
- languages.registerColorProvider(language, provider),
32
- languages.registerFoldingRangeProvider(language, provider),
33
- languages.registerDeclarationProvider(language, provider),
34
- languages.registerSelectionRangeProvider(language, provider),
35
- languages.registerInlayHintsProvider(language, provider),
36
- languages.registerDocumentSemanticTokensProvider(language, provider),
37
- languages.registerDocumentRangeSemanticTokensProvider(language, provider),
38
- ];
39
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
40
- }
41
- languages_1.registerProviders = registerProviders;
42
- })(languages || (exports.languages = languages = {}));
1
+ import { createLanguageFeaturesProvider } from './provider.js';
2
+ export async function registerProviders(worker, language, getSyncUris, languages) {
3
+ const provider = await createLanguageFeaturesProvider(worker, getSyncUris);
4
+ const disposables = [
5
+ languages.registerHoverProvider(language, provider),
6
+ languages.registerReferenceProvider(language, provider),
7
+ languages.registerRenameProvider(language, provider),
8
+ languages.registerSignatureHelpProvider(language, provider),
9
+ languages.registerDocumentSymbolProvider(language, provider),
10
+ languages.registerDocumentHighlightProvider(language, provider),
11
+ languages.registerLinkedEditingRangeProvider(language, provider),
12
+ languages.registerDefinitionProvider(language, provider),
13
+ languages.registerImplementationProvider(language, provider),
14
+ languages.registerTypeDefinitionProvider(language, provider),
15
+ languages.registerCodeLensProvider(language, provider),
16
+ languages.registerCodeActionProvider(language, provider),
17
+ languages.registerDocumentFormattingEditProvider(language, provider),
18
+ languages.registerDocumentRangeFormattingEditProvider(language, provider),
19
+ languages.registerOnTypeFormattingEditProvider(language, provider),
20
+ languages.registerLinkProvider(language, provider),
21
+ languages.registerCompletionItemProvider(language, provider),
22
+ languages.registerColorProvider(language, provider),
23
+ languages.registerFoldingRangeProvider(language, provider),
24
+ languages.registerDeclarationProvider(language, provider),
25
+ languages.registerSelectionRangeProvider(language, provider),
26
+ languages.registerInlayHintsProvider(language, provider),
27
+ languages.registerDocumentSemanticTokensProvider(language, provider),
28
+ languages.registerDocumentRangeSemanticTokensProvider(language, provider),
29
+ ];
30
+ return { dispose: () => disposables.forEach((d) => d.dispose()) };
31
+ }
43
32
  //# sourceMappingURL=languages.js.map
@@ -0,0 +1,3 @@
1
+ import type { Diagnostic } from '@volar/language-service';
2
+ import type { editor } from 'monaco-types';
3
+ export declare const markers: WeakMap<editor.IMarkerData, Diagnostic>;
package/lib/markers.js ADDED
@@ -0,0 +1,2 @@
1
+ export const markers = new WeakMap();
2
+ //# sourceMappingURL=markers.js.map
@@ -1,4 +1,3 @@
1
1
  import { LanguageService } from '@volar/language-service';
2
- import type { editor, languages, Uri } from 'monaco-editor-core';
2
+ import type { Uri, editor, languages } from 'monaco-types';
3
3
  export declare function createLanguageFeaturesProvider(worker: editor.MonacoWebWorker<LanguageService>, getSyncUris: () => Uri[]): Promise<languages.HoverProvider & languages.DocumentSymbolProvider & languages.DocumentHighlightProvider & languages.LinkedEditingRangeProvider & languages.DefinitionProvider & languages.TypeDefinitionProvider & languages.ImplementationProvider & languages.CodeLensProvider & languages.CodeActionProvider & languages.DocumentFormattingEditProvider & languages.DocumentRangeFormattingEditProvider & languages.OnTypeFormattingEditProvider & languages.LinkProvider & languages.CompletionItemProvider & languages.DocumentColorProvider & languages.FoldingRangeProvider & languages.DeclarationProvider & languages.SignatureHelpProvider & languages.RenameProvider & languages.ReferenceProvider & languages.SelectionRangeProvider & languages.InlayHintsProvider & languages.DocumentSemanticTokensProvider & languages.DocumentRangeSemanticTokensProvider>;
4
- //# sourceMappingURL=provider.d.ts.map