@theia/monaco 1.45.0 → 1.46.0-next.72
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 +100 -100
- package/data/monaco-nls.json +1379 -1379
- package/data/monaco-themes/vscode/dark_plus.json +201 -201
- package/data/monaco-themes/vscode/dark_theia.json +5 -5
- package/data/monaco-themes/vscode/dark_vs.json +393 -393
- package/data/monaco-themes/vscode/hc_black.json +457 -457
- package/data/monaco-themes/vscode/hc_light.json +590 -590
- package/data/monaco-themes/vscode/hc_theia.json +5 -5
- package/data/monaco-themes/vscode/hc_theia_light.json +5 -5
- package/data/monaco-themes/vscode/light_plus.json +202 -202
- package/data/monaco-themes/vscode/light_theia.json +10 -10
- package/data/monaco-themes/vscode/light_vs.json +421 -421
- package/lib/browser/index.d.ts +1 -1
- package/lib/browser/index.js +28 -28
- package/lib/browser/markdown-renderer/monaco-markdown-renderer.d.ts +20 -24
- package/lib/browser/markdown-renderer/monaco-markdown-renderer.d.ts.map +1 -1
- package/lib/browser/markdown-renderer/monaco-markdown-renderer.js +122 -137
- package/lib/browser/markdown-renderer/monaco-markdown-renderer.js.map +1 -1
- package/lib/browser/monaco-bulk-edit-service.d.ts +12 -14
- package/lib/browser/monaco-bulk-edit-service.d.ts.map +1 -1
- package/lib/browser/monaco-bulk-edit-service.js +66 -66
- package/lib/browser/monaco-bulk-edit-service.js.map +1 -1
- package/lib/browser/monaco-color-registry.d.ts +16 -16
- package/lib/browser/monaco-color-registry.js +82 -82
- package/lib/browser/monaco-command-registry.d.ts +19 -19
- package/lib/browser/monaco-command-registry.d.ts.map +1 -1
- package/lib/browser/monaco-command-registry.js +88 -85
- package/lib/browser/monaco-command-registry.js.map +1 -1
- package/lib/browser/monaco-command-service.d.ts +21 -26
- package/lib/browser/monaco-command-service.d.ts.map +1 -1
- package/lib/browser/monaco-command-service.js +93 -92
- package/lib/browser/monaco-command-service.js.map +1 -1
- package/lib/browser/monaco-command.d.ts +88 -94
- package/lib/browser/monaco-command.d.ts.map +1 -1
- package/lib/browser/monaco-command.js +294 -307
- package/lib/browser/monaco-command.js.map +1 -1
- package/lib/browser/monaco-context-key-service.d.ts +22 -22
- package/lib/browser/monaco-context-key-service.d.ts.map +1 -1
- package/lib/browser/monaco-context-key-service.js +146 -147
- package/lib/browser/monaco-context-key-service.js.map +1 -1
- package/lib/browser/monaco-context-menu.d.ts +17 -16
- package/lib/browser/monaco-context-menu.d.ts.map +1 -1
- package/lib/browser/monaco-context-menu.js +112 -102
- package/lib/browser/monaco-context-menu.js.map +1 -1
- package/lib/browser/monaco-diff-editor.d.ts +29 -29
- package/lib/browser/monaco-diff-editor.d.ts.map +1 -1
- package/lib/browser/monaco-diff-editor.js +74 -74
- package/lib/browser/monaco-diff-editor.js.map +1 -1
- package/lib/browser/monaco-diff-navigator-factory.d.ts +6 -7
- package/lib/browser/monaco-diff-navigator-factory.d.ts.map +1 -1
- package/lib/browser/monaco-diff-navigator-factory.js +45 -66
- package/lib/browser/monaco-diff-navigator-factory.js.map +1 -1
- package/lib/browser/monaco-editor-model.d.ts +158 -156
- package/lib/browser/monaco-editor-model.d.ts.map +1 -1
- package/lib/browser/monaco-editor-model.js +562 -559
- package/lib/browser/monaco-editor-model.js.map +1 -1
- package/lib/browser/monaco-editor-provider.d.ts +70 -89
- package/lib/browser/monaco-editor-provider.d.ts.map +1 -1
- package/lib/browser/monaco-editor-provider.js +386 -440
- package/lib/browser/monaco-editor-provider.js.map +1 -1
- package/lib/browser/monaco-editor-service.d.ts +32 -27
- package/lib/browser/monaco-editor-service.d.ts.map +1 -1
- package/lib/browser/monaco-editor-service.js +158 -155
- package/lib/browser/monaco-editor-service.js.map +1 -1
- package/lib/browser/monaco-editor-zone-widget.d.ts +43 -43
- package/lib/browser/monaco-editor-zone-widget.js +194 -194
- package/lib/browser/monaco-editor.d.ts +154 -151
- package/lib/browser/monaco-editor.d.ts.map +1 -1
- package/lib/browser/monaco-editor.js +542 -524
- package/lib/browser/monaco-editor.js.map +1 -1
- package/lib/browser/monaco-formatting-conflicts.d.ts +13 -13
- package/lib/browser/monaco-formatting-conflicts.js +111 -111
- package/lib/browser/monaco-formatting-conflicts.js.map +1 -1
- package/lib/browser/monaco-frontend-application-contribution.d.ts +22 -28
- package/lib/browser/monaco-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/monaco-frontend-application-contribution.js +178 -215
- package/lib/browser/monaco-frontend-application-contribution.js.map +1 -1
- package/lib/browser/monaco-frontend-module.d.ts +7 -7
- package/lib/browser/monaco-frontend-module.d.ts.map +1 -1
- package/lib/browser/monaco-frontend-module.js +280 -271
- package/lib/browser/monaco-frontend-module.js.map +1 -1
- package/lib/browser/monaco-gotoline-quick-access.d.ts +11 -11
- package/lib/browser/monaco-gotoline-quick-access.js +64 -64
- package/lib/browser/monaco-gotosymbol-quick-access.d.ts +16 -16
- package/lib/browser/monaco-gotosymbol-quick-access.js +70 -70
- package/lib/browser/monaco-icon-registry.d.ts +10 -11
- package/lib/browser/monaco-icon-registry.d.ts.map +1 -1
- package/lib/browser/monaco-icon-registry.js +52 -50
- package/lib/browser/monaco-icon-registry.js.map +1 -1
- package/lib/browser/monaco-indexed-db.d.ts +28 -28
- package/lib/browser/monaco-indexed-db.js +131 -131
- package/lib/browser/monaco-init.d.ts +5 -0
- package/lib/browser/monaco-init.d.ts.map +1 -0
- package/lib/browser/monaco-init.js +125 -0
- package/lib/browser/monaco-init.js.map +1 -0
- package/lib/browser/monaco-keybinding.d.ts +16 -16
- package/lib/browser/monaco-keybinding.js +134 -134
- package/lib/browser/monaco-keybinding.js.map +1 -1
- package/lib/browser/monaco-keycode-map.d.ts +2 -2
- package/lib/browser/monaco-keycode-map.js +163 -163
- package/lib/browser/monaco-keycode-map.js.map +1 -1
- package/lib/browser/monaco-languages.d.ts +35 -35
- package/lib/browser/monaco-languages.js +180 -180
- package/lib/browser/monaco-marker-collection.d.ts +18 -18
- package/lib/browser/monaco-marker-collection.js +70 -70
- package/lib/browser/monaco-menu.d.ts +20 -20
- package/lib/browser/monaco-menu.js +145 -145
- package/lib/browser/monaco-mime-service.d.ts +10 -10
- package/lib/browser/monaco-mime-service.js +78 -78
- package/lib/browser/monaco-outline-contribution.d.ts +78 -78
- package/lib/browser/monaco-outline-contribution.js +384 -384
- package/lib/browser/monaco-outline-decorator.d.ts +12 -12
- package/lib/browser/monaco-outline-decorator.js +67 -67
- package/lib/browser/monaco-quick-access-registry.d.ts +11 -11
- package/lib/browser/monaco-quick-access-registry.js +99 -99
- package/lib/browser/monaco-quick-input-service.d.ts +99 -101
- package/lib/browser/monaco-quick-input-service.d.ts.map +1 -1
- package/lib/browser/monaco-quick-input-service.js +529 -568
- package/lib/browser/monaco-quick-input-service.js.map +1 -1
- package/lib/browser/monaco-resolved-keybinding.d.ts +23 -23
- package/lib/browser/monaco-resolved-keybinding.d.ts.map +1 -1
- package/lib/browser/monaco-resolved-keybinding.js +131 -131
- package/lib/browser/monaco-resolved-keybinding.js.map +1 -1
- package/lib/browser/monaco-snippet-suggest-provider.d.ts +66 -66
- package/lib/browser/monaco-snippet-suggest-provider.js +273 -273
- package/lib/browser/monaco-status-bar-contribution.d.ts +17 -17
- package/lib/browser/monaco-status-bar-contribution.js +121 -121
- package/lib/browser/monaco-text-model-service.d.ts +51 -51
- package/lib/browser/monaco-text-model-service.js +189 -189
- package/lib/browser/monaco-text-model-service.js.map +1 -1
- package/lib/browser/monaco-theming-service.d.ts +67 -67
- package/lib/browser/monaco-theming-service.js +171 -171
- package/lib/browser/monaco-to-protocol-converter.d.ts +26 -26
- package/lib/browser/monaco-to-protocol-converter.js +61 -61
- package/lib/browser/monaco-workspace.d.ts +83 -85
- package/lib/browser/monaco-workspace.d.ts.map +1 -1
- package/lib/browser/monaco-workspace.js +384 -384
- package/lib/browser/monaco-workspace.js.map +1 -1
- package/lib/browser/protocol-to-monaco-converter.d.ts +31 -31
- package/lib/browser/protocol-to-monaco-converter.js +133 -133
- package/lib/browser/simple-monaco-editor.d.ts +45 -44
- package/lib/browser/simple-monaco-editor.d.ts.map +1 -1
- package/lib/browser/simple-monaco-editor.js +184 -176
- package/lib/browser/simple-monaco-editor.js.map +1 -1
- package/lib/browser/textmate/index.d.ts +4 -4
- package/lib/browser/textmate/index.js +31 -31
- package/lib/browser/textmate/monaco-textmate-frontend-bindings.d.ts +11 -11
- package/lib/browser/textmate/monaco-textmate-frontend-bindings.js +91 -91
- package/lib/browser/textmate/monaco-textmate-service.d.ts +30 -30
- package/lib/browser/textmate/monaco-textmate-service.js +185 -185
- package/lib/browser/textmate/monaco-textmate-service.js.map +1 -1
- package/lib/browser/textmate/monaco-theme-registry.d.ts +27 -27
- package/lib/browser/textmate/monaco-theme-registry.js +173 -173
- package/lib/browser/textmate/monaco-theme-types.d.ts +20 -20
- package/lib/browser/textmate/monaco-theme-types.js +21 -21
- package/lib/browser/textmate/textmate-contribution.d.ts +9 -9
- package/lib/browser/textmate/textmate-contribution.js +27 -27
- package/lib/browser/textmate/textmate-registry.d.ts +31 -31
- package/lib/browser/textmate/textmate-registry.js +109 -109
- package/lib/browser/textmate/textmate-snippet-completion-provider.d.ts +26 -26
- package/lib/browser/textmate/textmate-snippet-completion-provider.js +53 -53
- package/lib/browser/textmate/textmate-tokenizer.d.ts +22 -22
- package/lib/browser/textmate/textmate-tokenizer.js +65 -65
- package/lib/browser/workspace-symbol-command.d.ts +55 -55
- package/lib/browser/workspace-symbol-command.js +215 -215
- package/lib/package.spec.js +25 -25
- package/package.json +10 -10
- package/src/browser/index.ts +17 -17
- package/src/browser/markdown-renderer/monaco-markdown-renderer.ts +109 -117
- package/src/browser/monaco-bulk-edit-service.ts +64 -64
- package/src/browser/monaco-color-registry.ts +73 -73
- package/src/browser/monaco-command-registry.ts +85 -82
- package/src/browser/monaco-command-service.ts +90 -99
- package/src/browser/monaco-command.ts +303 -313
- package/src/browser/monaco-context-key-service.ts +144 -143
- package/src/browser/monaco-context-menu.ts +100 -90
- package/src/browser/monaco-diff-editor.ts +100 -101
- package/src/browser/monaco-diff-navigator-factory.ts +39 -61
- package/src/browser/monaco-editor-model.ts +684 -681
- package/src/browser/monaco-editor-provider.ts +409 -452
- package/src/browser/monaco-editor-service.ts +149 -144
- package/src/browser/monaco-editor-zone-widget.ts +250 -250
- package/src/browser/monaco-editor.ts +663 -644
- package/src/browser/monaco-formatting-conflicts.ts +116 -116
- package/src/browser/monaco-frontend-application-contribution.ts +165 -200
- package/src/browser/monaco-frontend-module.ts +328 -320
- package/src/browser/monaco-gotoline-quick-access.ts +47 -47
- package/src/browser/monaco-gotosymbol-quick-access.ts +53 -53
- package/src/browser/monaco-icon-registry.ts +49 -47
- package/src/browser/monaco-indexed-db.ts +130 -130
- package/src/browser/monaco-init.ts +114 -0
- package/src/browser/monaco-keybinding.ts +111 -111
- package/src/browser/monaco-keycode-map.ts +171 -171
- package/src/browser/monaco-languages.ts +177 -177
- package/src/browser/monaco-marker-collection.ts +83 -83
- package/src/browser/monaco-menu.ts +142 -142
- package/src/browser/monaco-mime-service.ts +71 -71
- package/src/browser/monaco-outline-contribution.ts +404 -404
- package/src/browser/monaco-outline-decorator.ts +66 -66
- package/src/browser/monaco-quick-access-registry.ts +112 -112
- package/src/browser/monaco-quick-input-service.ts +647 -676
- package/src/browser/monaco-resolved-keybinding.ts +162 -162
- package/src/browser/monaco-snippet-suggest-provider.ts +306 -306
- package/src/browser/monaco-status-bar-contribution.ts +110 -110
- package/src/browser/monaco-text-model-service.ts +199 -199
- package/src/browser/monaco-theming-service.ts +204 -204
- package/src/browser/monaco-to-protocol-converter.ts +71 -71
- package/src/browser/monaco-workspace.ts +412 -412
- package/src/browser/protocol-to-monaco-converter.ts +158 -158
- package/src/browser/simple-monaco-editor.ts +217 -210
- package/src/browser/style/index.css +263 -263
- package/src/browser/textmate/index.ts +20 -20
- package/src/browser/textmate/monaco-textmate-frontend-bindings.ts +90 -90
- package/src/browser/textmate/monaco-textmate-service.ts +187 -187
- package/src/browser/textmate/monaco-theme-registry.ts +176 -176
- package/src/browser/textmate/monaco-theme-types.ts +37 -37
- package/src/browser/textmate/textmate-contribution.ts +29 -29
- package/src/browser/textmate/textmate-registry.ts +129 -129
- package/src/browser/textmate/textmate-snippet-completion-provider.ts +73 -73
- package/src/browser/textmate/textmate-tokenizer.ts +84 -84
- package/src/browser/workspace-symbol-command.ts +196 -196
- package/src/package.spec.ts +28 -28
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2018 Ericsson and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.fetchOnigasm = exports.createOnigasmLib = exports.OnigasmLib = void 0;
|
|
19
|
-
const browser_1 = require("@theia/core/lib/browser");
|
|
20
|
-
const core_1 = require("@theia/core");
|
|
21
|
-
const textmate_registry_1 = require("./textmate-registry");
|
|
22
|
-
const textmate_contribution_1 = require("./textmate-contribution");
|
|
23
|
-
const monaco_textmate_service_1 = require("./monaco-textmate-service");
|
|
24
|
-
const monaco_theme_registry_1 = require("./monaco-theme-registry");
|
|
25
|
-
const vscode_oniguruma_1 = require("vscode-oniguruma");
|
|
26
|
-
const vscode_textmate_1 = require("vscode-textmate");
|
|
27
|
-
const monaco_theme_types_1 = require("./monaco-theme-types");
|
|
28
|
-
class OnigasmLib {
|
|
29
|
-
createOnigScanner(sources) {
|
|
30
|
-
return (0, vscode_oniguruma_1.createOnigScanner)(sources);
|
|
31
|
-
}
|
|
32
|
-
createOnigString(sources) {
|
|
33
|
-
return (0, vscode_oniguruma_1.createOnigString)(sources);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.OnigasmLib = OnigasmLib;
|
|
37
|
-
exports.default = (bind, unbind, isBound, rebind) => {
|
|
38
|
-
const onigLib = createOnigasmLib();
|
|
39
|
-
bind(monaco_theme_types_1.OnigasmProvider).toConstantValue(() => onigLib);
|
|
40
|
-
bind(monaco_textmate_service_1.MonacoTextmateService).toSelf().inSingletonScope();
|
|
41
|
-
bind(browser_1.FrontendApplicationContribution).toService(monaco_textmate_service_1.MonacoTextmateService);
|
|
42
|
-
(0, core_1.bindContributionProvider)(bind, textmate_contribution_1.LanguageGrammarDefinitionContribution);
|
|
43
|
-
bind(textmate_registry_1.TextmateRegistry).toSelf().inSingletonScope();
|
|
44
|
-
bind(monaco_theme_registry_1.MonacoThemeRegistry).toSelf().inSingletonScope();
|
|
45
|
-
bind(monaco_theme_types_1.TextmateRegistryFactory).toFactory(({ container }) => (theme) => {
|
|
46
|
-
const onigProvider = container.get(monaco_theme_types_1.OnigasmProvider);
|
|
47
|
-
const textmateRegistry = container.get(textmate_registry_1.TextmateRegistry);
|
|
48
|
-
return new vscode_textmate_1.Registry({
|
|
49
|
-
onigLib: onigProvider(),
|
|
50
|
-
theme,
|
|
51
|
-
loadGrammar: async (scopeName) => {
|
|
52
|
-
const provider = textmateRegistry.getProvider(scopeName);
|
|
53
|
-
if (provider) {
|
|
54
|
-
const definition = await provider.getGrammarDefinition();
|
|
55
|
-
let rawGrammar;
|
|
56
|
-
if (typeof definition.content === 'string') {
|
|
57
|
-
rawGrammar = (0, vscode_textmate_1.parseRawGrammar)(definition.content, definition.format === 'json' ? 'grammar.json' : 'grammar.plist');
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
rawGrammar = definition.content;
|
|
61
|
-
}
|
|
62
|
-
return rawGrammar;
|
|
63
|
-
}
|
|
64
|
-
return undefined;
|
|
65
|
-
},
|
|
66
|
-
getInjections: (scopeName) => {
|
|
67
|
-
const provider = textmateRegistry.getProvider(scopeName);
|
|
68
|
-
if (provider && provider.getInjections) {
|
|
69
|
-
return provider.getInjections(scopeName);
|
|
70
|
-
}
|
|
71
|
-
return [];
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
async function createOnigasmLib() {
|
|
77
|
-
if (!browser_1.isBasicWasmSupported) {
|
|
78
|
-
throw new Error('wasm not supported');
|
|
79
|
-
}
|
|
80
|
-
const wasm = await fetchOnigasm();
|
|
81
|
-
await (0, vscode_oniguruma_1.loadWASM)(wasm);
|
|
82
|
-
return new OnigasmLib();
|
|
83
|
-
}
|
|
84
|
-
exports.createOnigasmLib = createOnigasmLib;
|
|
85
|
-
async function fetchOnigasm() {
|
|
86
|
-
// Using Webpack's wasm loader should give us a URL to fetch the resource from:
|
|
87
|
-
const onigasmPath = require('vscode-oniguruma/release/onig.wasm');
|
|
88
|
-
const response = await fetch(onigasmPath, { method: 'GET' });
|
|
89
|
-
return response.arrayBuffer();
|
|
90
|
-
}
|
|
91
|
-
exports.fetchOnigasm = fetchOnigasm;
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2018 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.fetchOnigasm = exports.createOnigasmLib = exports.OnigasmLib = void 0;
|
|
19
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
20
|
+
const core_1 = require("@theia/core");
|
|
21
|
+
const textmate_registry_1 = require("./textmate-registry");
|
|
22
|
+
const textmate_contribution_1 = require("./textmate-contribution");
|
|
23
|
+
const monaco_textmate_service_1 = require("./monaco-textmate-service");
|
|
24
|
+
const monaco_theme_registry_1 = require("./monaco-theme-registry");
|
|
25
|
+
const vscode_oniguruma_1 = require("vscode-oniguruma");
|
|
26
|
+
const vscode_textmate_1 = require("vscode-textmate");
|
|
27
|
+
const monaco_theme_types_1 = require("./monaco-theme-types");
|
|
28
|
+
class OnigasmLib {
|
|
29
|
+
createOnigScanner(sources) {
|
|
30
|
+
return (0, vscode_oniguruma_1.createOnigScanner)(sources);
|
|
31
|
+
}
|
|
32
|
+
createOnigString(sources) {
|
|
33
|
+
return (0, vscode_oniguruma_1.createOnigString)(sources);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.OnigasmLib = OnigasmLib;
|
|
37
|
+
exports.default = (bind, unbind, isBound, rebind) => {
|
|
38
|
+
const onigLib = createOnigasmLib();
|
|
39
|
+
bind(monaco_theme_types_1.OnigasmProvider).toConstantValue(() => onigLib);
|
|
40
|
+
bind(monaco_textmate_service_1.MonacoTextmateService).toSelf().inSingletonScope();
|
|
41
|
+
bind(browser_1.FrontendApplicationContribution).toService(monaco_textmate_service_1.MonacoTextmateService);
|
|
42
|
+
(0, core_1.bindContributionProvider)(bind, textmate_contribution_1.LanguageGrammarDefinitionContribution);
|
|
43
|
+
bind(textmate_registry_1.TextmateRegistry).toSelf().inSingletonScope();
|
|
44
|
+
bind(monaco_theme_registry_1.MonacoThemeRegistry).toSelf().inSingletonScope();
|
|
45
|
+
bind(monaco_theme_types_1.TextmateRegistryFactory).toFactory(({ container }) => (theme) => {
|
|
46
|
+
const onigProvider = container.get(monaco_theme_types_1.OnigasmProvider);
|
|
47
|
+
const textmateRegistry = container.get(textmate_registry_1.TextmateRegistry);
|
|
48
|
+
return new vscode_textmate_1.Registry({
|
|
49
|
+
onigLib: onigProvider(),
|
|
50
|
+
theme,
|
|
51
|
+
loadGrammar: async (scopeName) => {
|
|
52
|
+
const provider = textmateRegistry.getProvider(scopeName);
|
|
53
|
+
if (provider) {
|
|
54
|
+
const definition = await provider.getGrammarDefinition();
|
|
55
|
+
let rawGrammar;
|
|
56
|
+
if (typeof definition.content === 'string') {
|
|
57
|
+
rawGrammar = (0, vscode_textmate_1.parseRawGrammar)(definition.content, definition.format === 'json' ? 'grammar.json' : 'grammar.plist');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
rawGrammar = definition.content;
|
|
61
|
+
}
|
|
62
|
+
return rawGrammar;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
},
|
|
66
|
+
getInjections: (scopeName) => {
|
|
67
|
+
const provider = textmateRegistry.getProvider(scopeName);
|
|
68
|
+
if (provider && provider.getInjections) {
|
|
69
|
+
return provider.getInjections(scopeName);
|
|
70
|
+
}
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
async function createOnigasmLib() {
|
|
77
|
+
if (!browser_1.isBasicWasmSupported) {
|
|
78
|
+
throw new Error('wasm not supported');
|
|
79
|
+
}
|
|
80
|
+
const wasm = await fetchOnigasm();
|
|
81
|
+
await (0, vscode_oniguruma_1.loadWASM)(wasm);
|
|
82
|
+
return new OnigasmLib();
|
|
83
|
+
}
|
|
84
|
+
exports.createOnigasmLib = createOnigasmLib;
|
|
85
|
+
async function fetchOnigasm() {
|
|
86
|
+
// Using Webpack's wasm loader should give us a URL to fetch the resource from:
|
|
87
|
+
const onigasmPath = require('vscode-oniguruma/release/onig.wasm');
|
|
88
|
+
const response = await fetch(onigasmPath, { method: 'GET' });
|
|
89
|
+
return response.arrayBuffer();
|
|
90
|
+
}
|
|
91
|
+
exports.fetchOnigasm = fetchOnigasm;
|
|
92
92
|
//# sourceMappingURL=monaco-textmate-frontend-bindings.js.map
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Registry } from 'vscode-textmate';
|
|
2
|
-
import { ILogger, ContributionProvider, DisposableCollection, Disposable } from '@theia/core';
|
|
3
|
-
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
4
|
-
import { ThemeService } from '@theia/core/lib/browser/theming';
|
|
5
|
-
import { LanguageGrammarDefinitionContribution } from './textmate-contribution';
|
|
6
|
-
import { TokenizerOption } from './textmate-tokenizer';
|
|
7
|
-
import { TextmateRegistry } from './textmate-registry';
|
|
8
|
-
import { MonacoThemeRegistry } from './monaco-theme-registry';
|
|
9
|
-
import { EditorPreferences } from '@theia/editor/lib/browser/editor-preferences';
|
|
10
|
-
import { OnigasmProvider, TextmateRegistryFactory } from './monaco-theme-types';
|
|
11
|
-
export declare class MonacoTextmateService implements FrontendApplicationContribution {
|
|
12
|
-
protected readonly tokenizerOption: TokenizerOption;
|
|
13
|
-
protected readonly _activatedLanguages: Set<string>;
|
|
14
|
-
protected grammarRegistry: Registry;
|
|
15
|
-
protected readonly grammarProviders: ContributionProvider<LanguageGrammarDefinitionContribution>;
|
|
16
|
-
protected readonly textmateRegistry: TextmateRegistry;
|
|
17
|
-
protected readonly logger: ILogger;
|
|
18
|
-
protected readonly onigasmProvider: OnigasmProvider;
|
|
19
|
-
protected readonly themeService: ThemeService;
|
|
20
|
-
protected readonly monacoThemeRegistry: MonacoThemeRegistry;
|
|
21
|
-
protected readonly preferences: EditorPreferences;
|
|
22
|
-
protected readonly registryFactory: TextmateRegistryFactory;
|
|
23
|
-
initialize(): void;
|
|
24
|
-
protected readonly toDisposeOnUpdateTheme: DisposableCollection;
|
|
25
|
-
protected updateTheme(): void;
|
|
26
|
-
protected get currentEditorTheme(): string;
|
|
27
|
-
activateLanguage(language: string): Disposable;
|
|
28
|
-
protected doActivateLanguage(languageId: string, toDispose: DisposableCollection): Promise<void>;
|
|
29
|
-
protected waitForLanguage(language: string, cb: () => {}): Disposable;
|
|
30
|
-
}
|
|
1
|
+
import { Registry } from 'vscode-textmate';
|
|
2
|
+
import { ILogger, ContributionProvider, DisposableCollection, Disposable } from '@theia/core';
|
|
3
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
4
|
+
import { ThemeService } from '@theia/core/lib/browser/theming';
|
|
5
|
+
import { LanguageGrammarDefinitionContribution } from './textmate-contribution';
|
|
6
|
+
import { TokenizerOption } from './textmate-tokenizer';
|
|
7
|
+
import { TextmateRegistry } from './textmate-registry';
|
|
8
|
+
import { MonacoThemeRegistry } from './monaco-theme-registry';
|
|
9
|
+
import { EditorPreferences } from '@theia/editor/lib/browser/editor-preferences';
|
|
10
|
+
import { OnigasmProvider, TextmateRegistryFactory } from './monaco-theme-types';
|
|
11
|
+
export declare class MonacoTextmateService implements FrontendApplicationContribution {
|
|
12
|
+
protected readonly tokenizerOption: TokenizerOption;
|
|
13
|
+
protected readonly _activatedLanguages: Set<string>;
|
|
14
|
+
protected grammarRegistry: Registry;
|
|
15
|
+
protected readonly grammarProviders: ContributionProvider<LanguageGrammarDefinitionContribution>;
|
|
16
|
+
protected readonly textmateRegistry: TextmateRegistry;
|
|
17
|
+
protected readonly logger: ILogger;
|
|
18
|
+
protected readonly onigasmProvider: OnigasmProvider;
|
|
19
|
+
protected readonly themeService: ThemeService;
|
|
20
|
+
protected readonly monacoThemeRegistry: MonacoThemeRegistry;
|
|
21
|
+
protected readonly preferences: EditorPreferences;
|
|
22
|
+
protected readonly registryFactory: TextmateRegistryFactory;
|
|
23
|
+
initialize(): void;
|
|
24
|
+
protected readonly toDisposeOnUpdateTheme: DisposableCollection;
|
|
25
|
+
protected updateTheme(): void;
|
|
26
|
+
protected get currentEditorTheme(): string;
|
|
27
|
+
activateLanguage(language: string): Disposable;
|
|
28
|
+
protected doActivateLanguage(languageId: string, toDispose: DisposableCollection): Promise<void>;
|
|
29
|
+
protected waitForLanguage(language: string, cb: () => {}): Disposable;
|
|
30
|
+
}
|
|
31
31
|
//# sourceMappingURL=monaco-textmate-service.d.ts.map
|
|
@@ -1,186 +1,186 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2018 Redhat, Ericsson and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
-
};
|
|
23
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
-
};
|
|
26
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.MonacoTextmateService = void 0;
|
|
28
|
-
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
-
const core_1 = require("@theia/core");
|
|
30
|
-
const browser_1 = require("@theia/core/lib/browser");
|
|
31
|
-
const theming_1 = require("@theia/core/lib/browser/theming");
|
|
32
|
-
const textmate_contribution_1 = require("./textmate-contribution");
|
|
33
|
-
const textmate_tokenizer_1 = require("./textmate-tokenizer");
|
|
34
|
-
const textmate_registry_1 = require("./textmate-registry");
|
|
35
|
-
const monaco_theme_registry_1 = require("./monaco-theme-registry");
|
|
36
|
-
const editor_preferences_1 = require("@theia/editor/lib/browser/editor-preferences");
|
|
37
|
-
const monaco = require("@theia/monaco-editor-core");
|
|
38
|
-
const languages_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/languages");
|
|
39
|
-
const standaloneTheme_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/common/standaloneTheme");
|
|
40
|
-
const standaloneServices_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices");
|
|
41
|
-
const language_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/languages/language");
|
|
42
|
-
const standaloneLanguages_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneLanguages");
|
|
43
|
-
const monaco_theme_types_1 = require("./monaco-theme-types");
|
|
44
|
-
let MonacoTextmateService = class MonacoTextmateService {
|
|
45
|
-
constructor() {
|
|
46
|
-
this.tokenizerOption = {
|
|
47
|
-
lineLimit: 400
|
|
48
|
-
};
|
|
49
|
-
this._activatedLanguages = new Set();
|
|
50
|
-
this.toDisposeOnUpdateTheme = new core_1.DisposableCollection();
|
|
51
|
-
}
|
|
52
|
-
initialize() {
|
|
53
|
-
if (!browser_1.isBasicWasmSupported) {
|
|
54
|
-
console.log('Textmate support deactivated because WebAssembly is not detected.');
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
for (const grammarProvider of this.grammarProviders.getContributions()) {
|
|
58
|
-
try {
|
|
59
|
-
grammarProvider.registerTextmateLanguage(this.textmateRegistry);
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
console.error(err);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
this.grammarRegistry = this.registryFactory(this.monacoThemeRegistry.getThemeData(this.currentEditorTheme));
|
|
66
|
-
this.tokenizerOption.lineLimit = this.preferences['editor.maxTokenizationLineLength'];
|
|
67
|
-
this.preferences.onPreferenceChanged(e => {
|
|
68
|
-
if (e.preferenceName === 'editor.maxTokenizationLineLength') {
|
|
69
|
-
this.tokenizerOption.lineLimit = e.newValue;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
this.updateTheme();
|
|
73
|
-
this.themeService.onDidColorThemeChange(() => this.updateTheme());
|
|
74
|
-
for (const id of this.textmateRegistry.languages) {
|
|
75
|
-
this.activateLanguage(id);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
updateTheme() {
|
|
79
|
-
this.toDisposeOnUpdateTheme.dispose();
|
|
80
|
-
const currentEditorTheme = this.currentEditorTheme;
|
|
81
|
-
document.body.classList.add(currentEditorTheme);
|
|
82
|
-
this.toDisposeOnUpdateTheme.push(core_1.Disposable.create(() => document.body.classList.remove(currentEditorTheme)));
|
|
83
|
-
// first update registry to run tokenization with the proper theme
|
|
84
|
-
const theme = this.monacoThemeRegistry.getThemeData(currentEditorTheme);
|
|
85
|
-
if (theme) {
|
|
86
|
-
this.grammarRegistry.setTheme(theme);
|
|
87
|
-
}
|
|
88
|
-
// then trigger tokenization by setting monaco theme
|
|
89
|
-
monaco.editor.setTheme(currentEditorTheme);
|
|
90
|
-
}
|
|
91
|
-
get currentEditorTheme() {
|
|
92
|
-
return this.themeService.getCurrentTheme().editorTheme || monaco_theme_registry_1.MonacoThemeRegistry.DARK_DEFAULT_THEME;
|
|
93
|
-
}
|
|
94
|
-
activateLanguage(language) {
|
|
95
|
-
const toDispose = new core_1.DisposableCollection(core_1.Disposable.create(() => { }));
|
|
96
|
-
toDispose.push(this.waitForLanguage(language, () => this.doActivateLanguage(language, toDispose)));
|
|
97
|
-
return toDispose;
|
|
98
|
-
}
|
|
99
|
-
async doActivateLanguage(languageId, toDispose) {
|
|
100
|
-
if (this._activatedLanguages.has(languageId)) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this._activatedLanguages.add(languageId);
|
|
104
|
-
toDispose.push(core_1.Disposable.create(() => this._activatedLanguages.delete(languageId)));
|
|
105
|
-
const scopeName = this.textmateRegistry.getScope(languageId);
|
|
106
|
-
if (!scopeName) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const provider = this.textmateRegistry.getProvider(scopeName);
|
|
110
|
-
if (!provider) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const configuration = this.textmateRegistry.getGrammarConfiguration(languageId);
|
|
114
|
-
const initialLanguage = (0, textmate_contribution_1.getEncodedLanguageId)(languageId);
|
|
115
|
-
await this.onigasmProvider();
|
|
116
|
-
if (toDispose.disposed) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
const grammar = await this.grammarRegistry.loadGrammarWithConfiguration(scopeName, initialLanguage, configuration);
|
|
121
|
-
if (toDispose.disposed) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (!grammar) {
|
|
125
|
-
throw new Error(`no grammar for ${scopeName}, ${initialLanguage}, ${JSON.stringify(configuration)}`);
|
|
126
|
-
}
|
|
127
|
-
const options = configuration.tokenizerOption ? configuration.tokenizerOption : this.tokenizerOption;
|
|
128
|
-
const tokenizer = (0, textmate_tokenizer_1.createTextmateTokenizer)(grammar, options);
|
|
129
|
-
toDispose.push(monaco.languages.setTokensProvider(languageId, tokenizer));
|
|
130
|
-
const support = languages_1.TokenizationRegistry.get(languageId);
|
|
131
|
-
const themeService = standaloneServices_1.StandaloneServices.get(standaloneTheme_1.IStandaloneThemeService);
|
|
132
|
-
const languageService = standaloneServices_1.StandaloneServices.get(language_1.ILanguageService);
|
|
133
|
-
const adapter = new standaloneLanguages_1.TokenizationSupportAdapter(languageId, tokenizer, languageService, themeService);
|
|
134
|
-
support.tokenize = adapter.tokenize.bind(adapter);
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
this.logger.warn('No grammar for this language id', languageId, error);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
waitForLanguage(language, cb) {
|
|
141
|
-
const languageService = standaloneServices_1.StandaloneServices.get(language_1.ILanguageService);
|
|
142
|
-
if (languageService['
|
|
143
|
-
cb();
|
|
144
|
-
return core_1.Disposable.NULL;
|
|
145
|
-
}
|
|
146
|
-
return monaco.languages.onLanguage(language, cb);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
__decorate([
|
|
150
|
-
(0, inversify_1.inject)(core_1.ContributionProvider),
|
|
151
|
-
(0, inversify_1.named)(textmate_contribution_1.LanguageGrammarDefinitionContribution),
|
|
152
|
-
__metadata("design:type", Object)
|
|
153
|
-
], MonacoTextmateService.prototype, "grammarProviders", void 0);
|
|
154
|
-
__decorate([
|
|
155
|
-
(0, inversify_1.inject)(textmate_registry_1.TextmateRegistry),
|
|
156
|
-
__metadata("design:type", textmate_registry_1.TextmateRegistry)
|
|
157
|
-
], MonacoTextmateService.prototype, "textmateRegistry", void 0);
|
|
158
|
-
__decorate([
|
|
159
|
-
(0, inversify_1.inject)(core_1.ILogger),
|
|
160
|
-
__metadata("design:type", Object)
|
|
161
|
-
], MonacoTextmateService.prototype, "logger", void 0);
|
|
162
|
-
__decorate([
|
|
163
|
-
(0, inversify_1.inject)(monaco_theme_types_1.OnigasmProvider),
|
|
164
|
-
__metadata("design:type", Function)
|
|
165
|
-
], MonacoTextmateService.prototype, "onigasmProvider", void 0);
|
|
166
|
-
__decorate([
|
|
167
|
-
(0, inversify_1.inject)(theming_1.ThemeService),
|
|
168
|
-
__metadata("design:type", theming_1.ThemeService)
|
|
169
|
-
], MonacoTextmateService.prototype, "themeService", void 0);
|
|
170
|
-
__decorate([
|
|
171
|
-
(0, inversify_1.inject)(monaco_theme_registry_1.MonacoThemeRegistry),
|
|
172
|
-
__metadata("design:type", monaco_theme_registry_1.MonacoThemeRegistry)
|
|
173
|
-
], MonacoTextmateService.prototype, "monacoThemeRegistry", void 0);
|
|
174
|
-
__decorate([
|
|
175
|
-
(0, inversify_1.inject)(editor_preferences_1.EditorPreferences),
|
|
176
|
-
__metadata("design:type", Object)
|
|
177
|
-
], MonacoTextmateService.prototype, "preferences", void 0);
|
|
178
|
-
__decorate([
|
|
179
|
-
(0, inversify_1.inject)(monaco_theme_types_1.TextmateRegistryFactory),
|
|
180
|
-
__metadata("design:type", Function)
|
|
181
|
-
], MonacoTextmateService.prototype, "registryFactory", void 0);
|
|
182
|
-
MonacoTextmateService = __decorate([
|
|
183
|
-
(0, inversify_1.injectable)()
|
|
184
|
-
], MonacoTextmateService);
|
|
185
|
-
exports.MonacoTextmateService = MonacoTextmateService;
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2018 Redhat, Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.MonacoTextmateService = void 0;
|
|
28
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
+
const core_1 = require("@theia/core");
|
|
30
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
31
|
+
const theming_1 = require("@theia/core/lib/browser/theming");
|
|
32
|
+
const textmate_contribution_1 = require("./textmate-contribution");
|
|
33
|
+
const textmate_tokenizer_1 = require("./textmate-tokenizer");
|
|
34
|
+
const textmate_registry_1 = require("./textmate-registry");
|
|
35
|
+
const monaco_theme_registry_1 = require("./monaco-theme-registry");
|
|
36
|
+
const editor_preferences_1 = require("@theia/editor/lib/browser/editor-preferences");
|
|
37
|
+
const monaco = require("@theia/monaco-editor-core");
|
|
38
|
+
const languages_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/languages");
|
|
39
|
+
const standaloneTheme_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/common/standaloneTheme");
|
|
40
|
+
const standaloneServices_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices");
|
|
41
|
+
const language_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/languages/language");
|
|
42
|
+
const standaloneLanguages_1 = require("@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneLanguages");
|
|
43
|
+
const monaco_theme_types_1 = require("./monaco-theme-types");
|
|
44
|
+
let MonacoTextmateService = class MonacoTextmateService {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.tokenizerOption = {
|
|
47
|
+
lineLimit: 400
|
|
48
|
+
};
|
|
49
|
+
this._activatedLanguages = new Set();
|
|
50
|
+
this.toDisposeOnUpdateTheme = new core_1.DisposableCollection();
|
|
51
|
+
}
|
|
52
|
+
initialize() {
|
|
53
|
+
if (!browser_1.isBasicWasmSupported) {
|
|
54
|
+
console.log('Textmate support deactivated because WebAssembly is not detected.');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
for (const grammarProvider of this.grammarProviders.getContributions()) {
|
|
58
|
+
try {
|
|
59
|
+
grammarProvider.registerTextmateLanguage(this.textmateRegistry);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error(err);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this.grammarRegistry = this.registryFactory(this.monacoThemeRegistry.getThemeData(this.currentEditorTheme));
|
|
66
|
+
this.tokenizerOption.lineLimit = this.preferences['editor.maxTokenizationLineLength'];
|
|
67
|
+
this.preferences.onPreferenceChanged(e => {
|
|
68
|
+
if (e.preferenceName === 'editor.maxTokenizationLineLength') {
|
|
69
|
+
this.tokenizerOption.lineLimit = e.newValue;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.updateTheme();
|
|
73
|
+
this.themeService.onDidColorThemeChange(() => this.updateTheme());
|
|
74
|
+
for (const id of this.textmateRegistry.languages) {
|
|
75
|
+
this.activateLanguage(id);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
updateTheme() {
|
|
79
|
+
this.toDisposeOnUpdateTheme.dispose();
|
|
80
|
+
const currentEditorTheme = this.currentEditorTheme;
|
|
81
|
+
document.body.classList.add(currentEditorTheme);
|
|
82
|
+
this.toDisposeOnUpdateTheme.push(core_1.Disposable.create(() => document.body.classList.remove(currentEditorTheme)));
|
|
83
|
+
// first update registry to run tokenization with the proper theme
|
|
84
|
+
const theme = this.monacoThemeRegistry.getThemeData(currentEditorTheme);
|
|
85
|
+
if (theme) {
|
|
86
|
+
this.grammarRegistry.setTheme(theme);
|
|
87
|
+
}
|
|
88
|
+
// then trigger tokenization by setting monaco theme
|
|
89
|
+
monaco.editor.setTheme(currentEditorTheme);
|
|
90
|
+
}
|
|
91
|
+
get currentEditorTheme() {
|
|
92
|
+
return this.themeService.getCurrentTheme().editorTheme || monaco_theme_registry_1.MonacoThemeRegistry.DARK_DEFAULT_THEME;
|
|
93
|
+
}
|
|
94
|
+
activateLanguage(language) {
|
|
95
|
+
const toDispose = new core_1.DisposableCollection(core_1.Disposable.create(() => { }));
|
|
96
|
+
toDispose.push(this.waitForLanguage(language, () => this.doActivateLanguage(language, toDispose)));
|
|
97
|
+
return toDispose;
|
|
98
|
+
}
|
|
99
|
+
async doActivateLanguage(languageId, toDispose) {
|
|
100
|
+
if (this._activatedLanguages.has(languageId)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._activatedLanguages.add(languageId);
|
|
104
|
+
toDispose.push(core_1.Disposable.create(() => this._activatedLanguages.delete(languageId)));
|
|
105
|
+
const scopeName = this.textmateRegistry.getScope(languageId);
|
|
106
|
+
if (!scopeName) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const provider = this.textmateRegistry.getProvider(scopeName);
|
|
110
|
+
if (!provider) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const configuration = this.textmateRegistry.getGrammarConfiguration(languageId);
|
|
114
|
+
const initialLanguage = (0, textmate_contribution_1.getEncodedLanguageId)(languageId);
|
|
115
|
+
await this.onigasmProvider();
|
|
116
|
+
if (toDispose.disposed) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const grammar = await this.grammarRegistry.loadGrammarWithConfiguration(scopeName, initialLanguage, configuration);
|
|
121
|
+
if (toDispose.disposed) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (!grammar) {
|
|
125
|
+
throw new Error(`no grammar for ${scopeName}, ${initialLanguage}, ${JSON.stringify(configuration)}`);
|
|
126
|
+
}
|
|
127
|
+
const options = configuration.tokenizerOption ? configuration.tokenizerOption : this.tokenizerOption;
|
|
128
|
+
const tokenizer = (0, textmate_tokenizer_1.createTextmateTokenizer)(grammar, options);
|
|
129
|
+
toDispose.push(monaco.languages.setTokensProvider(languageId, tokenizer));
|
|
130
|
+
const support = languages_1.TokenizationRegistry.get(languageId);
|
|
131
|
+
const themeService = standaloneServices_1.StandaloneServices.get(standaloneTheme_1.IStandaloneThemeService);
|
|
132
|
+
const languageService = standaloneServices_1.StandaloneServices.get(language_1.ILanguageService);
|
|
133
|
+
const adapter = new standaloneLanguages_1.TokenizationSupportAdapter(languageId, tokenizer, languageService, themeService);
|
|
134
|
+
support.tokenize = adapter.tokenize.bind(adapter);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.logger.warn('No grammar for this language id', languageId, error);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
waitForLanguage(language, cb) {
|
|
141
|
+
const languageService = standaloneServices_1.StandaloneServices.get(language_1.ILanguageService);
|
|
142
|
+
if (languageService['_requestedBasicLanguages'].has(language)) {
|
|
143
|
+
cb();
|
|
144
|
+
return core_1.Disposable.NULL;
|
|
145
|
+
}
|
|
146
|
+
return monaco.languages.onLanguage(language, cb);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
__decorate([
|
|
150
|
+
(0, inversify_1.inject)(core_1.ContributionProvider),
|
|
151
|
+
(0, inversify_1.named)(textmate_contribution_1.LanguageGrammarDefinitionContribution),
|
|
152
|
+
__metadata("design:type", Object)
|
|
153
|
+
], MonacoTextmateService.prototype, "grammarProviders", void 0);
|
|
154
|
+
__decorate([
|
|
155
|
+
(0, inversify_1.inject)(textmate_registry_1.TextmateRegistry),
|
|
156
|
+
__metadata("design:type", textmate_registry_1.TextmateRegistry)
|
|
157
|
+
], MonacoTextmateService.prototype, "textmateRegistry", void 0);
|
|
158
|
+
__decorate([
|
|
159
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
160
|
+
__metadata("design:type", Object)
|
|
161
|
+
], MonacoTextmateService.prototype, "logger", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
(0, inversify_1.inject)(monaco_theme_types_1.OnigasmProvider),
|
|
164
|
+
__metadata("design:type", Function)
|
|
165
|
+
], MonacoTextmateService.prototype, "onigasmProvider", void 0);
|
|
166
|
+
__decorate([
|
|
167
|
+
(0, inversify_1.inject)(theming_1.ThemeService),
|
|
168
|
+
__metadata("design:type", theming_1.ThemeService)
|
|
169
|
+
], MonacoTextmateService.prototype, "themeService", void 0);
|
|
170
|
+
__decorate([
|
|
171
|
+
(0, inversify_1.inject)(monaco_theme_registry_1.MonacoThemeRegistry),
|
|
172
|
+
__metadata("design:type", monaco_theme_registry_1.MonacoThemeRegistry)
|
|
173
|
+
], MonacoTextmateService.prototype, "monacoThemeRegistry", void 0);
|
|
174
|
+
__decorate([
|
|
175
|
+
(0, inversify_1.inject)(editor_preferences_1.EditorPreferences),
|
|
176
|
+
__metadata("design:type", Object)
|
|
177
|
+
], MonacoTextmateService.prototype, "preferences", void 0);
|
|
178
|
+
__decorate([
|
|
179
|
+
(0, inversify_1.inject)(monaco_theme_types_1.TextmateRegistryFactory),
|
|
180
|
+
__metadata("design:type", Function)
|
|
181
|
+
], MonacoTextmateService.prototype, "registryFactory", void 0);
|
|
182
|
+
MonacoTextmateService = __decorate([
|
|
183
|
+
(0, inversify_1.injectable)()
|
|
184
|
+
], MonacoTextmateService);
|
|
185
|
+
exports.MonacoTextmateService = MonacoTextmateService;
|
|
186
186
|
//# sourceMappingURL=monaco-textmate-service.js.map
|