@theia/monaco 1.34.1 → 1.34.3
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/LICENSE +641 -641
- 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 +392 -392
- 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 +24 -24
- package/lib/browser/markdown-renderer/monaco-markdown-renderer.js +137 -137
- package/lib/browser/monaco-bulk-edit-service.d.ts +14 -14
- package/lib/browser/monaco-bulk-edit-service.js +66 -66
- 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.js +82 -82
- package/lib/browser/monaco-command-service.d.ts +26 -26
- package/lib/browser/monaco-command-service.js +92 -92
- package/lib/browser/monaco-command.d.ts +94 -94
- package/lib/browser/monaco-command.js +306 -306
- package/lib/browser/monaco-context-key-service.d.ts +22 -22
- package/lib/browser/monaco-context-key-service.js +147 -147
- package/lib/browser/monaco-context-menu.d.ts +16 -16
- package/lib/browser/monaco-context-menu.js +102 -102
- package/lib/browser/monaco-diagnostic-collection.d.ts +28 -28
- package/lib/browser/monaco-diagnostic-collection.js +86 -86
- package/lib/browser/monaco-diff-editor.d.ts +29 -29
- package/lib/browser/monaco-diff-editor.js +74 -74
- package/lib/browser/monaco-diff-navigator-factory.d.ts +7 -7
- package/lib/browser/monaco-diff-navigator-factory.js +66 -66
- package/lib/browser/monaco-editor-model.d.ts +156 -156
- package/lib/browser/monaco-editor-model.js +555 -555
- package/lib/browser/monaco-editor-provider.d.ts +89 -89
- package/lib/browser/monaco-editor-provider.js +440 -440
- package/lib/browser/monaco-editor-service.d.ts +27 -27
- package/lib/browser/monaco-editor-service.js +151 -151
- 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 +151 -151
- package/lib/browser/monaco-editor.js +497 -497
- package/lib/browser/monaco-formatting-conflicts.d.ts +13 -13
- package/lib/browser/monaco-formatting-conflicts.js +110 -110
- package/lib/browser/monaco-frontend-application-contribution.d.ts +26 -26
- package/lib/browser/monaco-frontend-application-contribution.js +201 -201
- package/lib/browser/monaco-frontend-module.d.ts +7 -7
- package/lib/browser/monaco-frontend-module.js +266 -266
- 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-indexed-db.d.ts +28 -28
- package/lib/browser/monaco-indexed-db.js +131 -131
- package/lib/browser/monaco-keybinding-contexts.d.ts +15 -15
- package/lib/browser/monaco-keybinding-contexts.js +50 -50
- package/lib/browser/monaco-keybinding.d.ts +16 -16
- package/lib/browser/monaco-keybinding.js +134 -134
- package/lib/browser/monaco-keycode-map.d.ts +2 -2
- package/lib/browser/monaco-keycode-map.js +163 -163
- package/lib/browser/monaco-languages.d.ts +27 -27
- package/lib/browser/monaco-languages.js +136 -136
- 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 -99
- package/lib/browser/monaco-quick-input-service.js +555 -555
- package/lib/browser/monaco-resolved-keybinding.d.ts +23 -23
- package/lib/browser/monaco-resolved-keybinding.js +131 -131
- package/lib/browser/monaco-snippet-suggest-provider.d.ts +64 -64
- package/lib/browser/monaco-snippet-suggest-provider.js +269 -269
- package/lib/browser/monaco-status-bar-contribution.d.ts +17 -17
- package/lib/browser/monaco-status-bar-contribution.js +120 -120
- package/lib/browser/monaco-text-model-service.d.ts +51 -51
- package/lib/browser/monaco-text-model-service.js +184 -184
- 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 -83
- package/lib/browser/monaco-workspace.js +369 -369
- package/lib/browser/protocol-to-monaco-converter.d.ts +31 -31
- package/lib/browser/protocol-to-monaco-converter.js +133 -133
- 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 +12 -12
- package/lib/browser/textmate/monaco-textmate-frontend-bindings.js +94 -94
- 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-theme-registry.d.ts +27 -27
- package/lib/browser/textmate/monaco-theme-registry.js +171 -171
- 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 +8 -8
- package/src/browser/index.ts +17 -17
- package/src/browser/markdown-renderer/monaco-markdown-renderer.ts +117 -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 +82 -82
- package/src/browser/monaco-command-service.ts +99 -99
- package/src/browser/monaco-command.ts +311 -311
- package/src/browser/monaco-context-key-service.ts +143 -143
- package/src/browser/monaco-context-menu.ts +90 -90
- package/src/browser/monaco-diagnostic-collection.ts +101 -101
- package/src/browser/monaco-diff-editor.ts +101 -101
- package/src/browser/monaco-diff-navigator-factory.ts +61 -61
- package/src/browser/monaco-editor-model.ts +681 -681
- package/src/browser/monaco-editor-provider.ts +452 -452
- package/src/browser/monaco-editor-service.ts +144 -144
- package/src/browser/monaco-editor-zone-widget.ts +250 -250
- package/src/browser/monaco-editor.ts +644 -644
- package/src/browser/monaco-formatting-conflicts.ts +115 -115
- package/src/browser/monaco-frontend-application-contribution.ts +188 -188
- package/src/browser/monaco-frontend-module.ts +314 -314
- package/src/browser/monaco-gotoline-quick-access.ts +47 -47
- package/src/browser/monaco-gotosymbol-quick-access.ts +53 -53
- package/src/browser/monaco-indexed-db.ts +130 -130
- package/src/browser/monaco-keybinding-contexts.ts +43 -43
- package/src/browser/monaco-keybinding.ts +111 -111
- package/src/browser/monaco-keycode-map.ts +171 -171
- package/src/browser/monaco-languages.ts +129 -129
- 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 +651 -651
- package/src/browser/monaco-resolved-keybinding.ts +162 -162
- package/src/browser/monaco-snippet-suggest-provider.ts +300 -300
- package/src/browser/monaco-status-bar-contribution.ts +109 -109
- package/src/browser/monaco-text-model-service.ts +194 -194
- 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 +393 -393
- package/src/browser/protocol-to-monaco-converter.ts +158 -158
- package/src/browser/style/index.css +267 -267
- package/src/browser/textmate/index.ts +20 -20
- package/src/browser/textmate/monaco-textmate-frontend-bindings.ts +94 -94
- 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,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 { OnigasmPromise, 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 onigasmPromise: OnigasmPromise;
|
|
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 { OnigasmPromise, 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 onigasmPromise: OnigasmPromise;
|
|
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 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.onigasmPromise;
|
|
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['_encounteredLanguages'].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.OnigasmPromise),
|
|
164
|
-
__metadata("design:type", Object)
|
|
165
|
-
], MonacoTextmateService.prototype, "onigasmPromise", 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 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.onigasmPromise;
|
|
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['_encounteredLanguages'].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.OnigasmPromise),
|
|
164
|
+
__metadata("design:type", Object)
|
|
165
|
+
], MonacoTextmateService.prototype, "onigasmPromise", 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
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import * as monaco from '@theia/monaco-editor-core';
|
|
2
|
-
import { Color } from '@theia/monaco-editor-core/esm/vs/base/common/color';
|
|
3
|
-
import { MixStandaloneTheme, TextmateRegistryFactory, ThemeMix } from './monaco-theme-types';
|
|
4
|
-
export declare class MonacoThemeRegistry {
|
|
5
|
-
protected readonly registryFactory: TextmateRegistryFactory;
|
|
6
|
-
initializeDefaultThemes(): void;
|
|
7
|
-
getThemeData(): ThemeMix;
|
|
8
|
-
getThemeData(name: string): ThemeMix | undefined;
|
|
9
|
-
getTheme(): MixStandaloneTheme;
|
|
10
|
-
getTheme(name: string): MixStandaloneTheme | undefined;
|
|
11
|
-
protected doGetTheme(name: string | undefined): MixStandaloneTheme | undefined;
|
|
12
|
-
setTheme(name: string, data: ThemeMix): void;
|
|
13
|
-
/**
|
|
14
|
-
* Register VS Code compatible themes
|
|
15
|
-
*/
|
|
16
|
-
register(json: any, includes?: {
|
|
17
|
-
[includePath: string]: any;
|
|
18
|
-
}, givenName?: string, monacoBase?: monaco.editor.BuiltinTheme): ThemeMix;
|
|
19
|
-
protected transform(tokenColor: any, acceptor: (rule: monaco.editor.ITokenThemeRule) => void): void;
|
|
20
|
-
protected normalizeColor(color: string | Color | undefined): string | undefined;
|
|
21
|
-
}
|
|
22
|
-
export declare namespace MonacoThemeRegistry {
|
|
23
|
-
const DARK_DEFAULT_THEME = "dark-theia";
|
|
24
|
-
const LIGHT_DEFAULT_THEME = "light-theia";
|
|
25
|
-
const HC_DEFAULT_THEME = "hc-theia";
|
|
26
|
-
const HC_LIGHT_THEME = "hc-theia-light";
|
|
27
|
-
}
|
|
1
|
+
import * as monaco from '@theia/monaco-editor-core';
|
|
2
|
+
import { Color } from '@theia/monaco-editor-core/esm/vs/base/common/color';
|
|
3
|
+
import { MixStandaloneTheme, TextmateRegistryFactory, ThemeMix } from './monaco-theme-types';
|
|
4
|
+
export declare class MonacoThemeRegistry {
|
|
5
|
+
protected readonly registryFactory: TextmateRegistryFactory;
|
|
6
|
+
initializeDefaultThemes(): void;
|
|
7
|
+
getThemeData(): ThemeMix;
|
|
8
|
+
getThemeData(name: string): ThemeMix | undefined;
|
|
9
|
+
getTheme(): MixStandaloneTheme;
|
|
10
|
+
getTheme(name: string): MixStandaloneTheme | undefined;
|
|
11
|
+
protected doGetTheme(name: string | undefined): MixStandaloneTheme | undefined;
|
|
12
|
+
setTheme(name: string, data: ThemeMix): void;
|
|
13
|
+
/**
|
|
14
|
+
* Register VS Code compatible themes
|
|
15
|
+
*/
|
|
16
|
+
register(json: any, includes?: {
|
|
17
|
+
[includePath: string]: any;
|
|
18
|
+
}, givenName?: string, monacoBase?: monaco.editor.BuiltinTheme): ThemeMix;
|
|
19
|
+
protected transform(tokenColor: any, acceptor: (rule: monaco.editor.ITokenThemeRule) => void): void;
|
|
20
|
+
protected normalizeColor(color: string | Color | undefined): string | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare namespace MonacoThemeRegistry {
|
|
23
|
+
const DARK_DEFAULT_THEME = "dark-theia";
|
|
24
|
+
const LIGHT_DEFAULT_THEME = "light-theia";
|
|
25
|
+
const HC_DEFAULT_THEME = "hc-theia";
|
|
26
|
+
const HC_LIGHT_THEME = "hc-theia-light";
|
|
27
|
+
}
|
|
28
28
|
//# sourceMappingURL=monaco-theme-registry.d.ts.map
|