@codingame/monaco-vscode-api 1.80.0-next.5 → 1.80.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 +22 -9
- package/dist/default-extensions/bat.js +3 -3
- package/dist/default-extensions/clojure.js +2 -2
- package/dist/default-extensions/coffeescript.js +3 -3
- package/dist/default-extensions/configuration-editing.js +3 -3
- package/dist/default-extensions/cpp.js +8 -8
- package/dist/default-extensions/csharp.js +3 -3
- package/dist/default-extensions/css-language-features.js +5 -5
- package/dist/default-extensions/css.js +2 -2
- package/dist/default-extensions/dart.js +2 -2
- package/dist/default-extensions/diff.js +2 -2
- package/dist/default-extensions/docker.js +2 -2
- package/dist/default-extensions/emmet.js +2 -2
- package/dist/default-extensions/extension-editing.js +2 -2
- package/dist/default-extensions/fsharp.js +3 -3
- package/dist/default-extensions/git-base.js +8 -8
- package/dist/default-extensions/github-authentication.js +2 -2
- package/dist/default-extensions/github.js +1 -1
- package/dist/default-extensions/go.js +2 -2
- package/dist/default-extensions/groovy.js +3 -3
- package/dist/default-extensions/handlebars.js +2 -2
- package/dist/default-extensions/hlsl.js +2 -2
- package/dist/default-extensions/html-language-features.js +5 -5
- package/dist/default-extensions/html.js +4 -4
- package/dist/default-extensions/ini.js +3 -3
- package/dist/default-extensions/ipynb.js +2 -2
- package/dist/default-extensions/java.js +3 -3
- package/dist/default-extensions/javascript.js +6 -6
- package/dist/default-extensions/json-language-features.js +4 -4
- package/dist/default-extensions/json.js +4 -4
- package/dist/default-extensions/julia.js +2 -2
- package/dist/default-extensions/latex.js +8 -8
- package/dist/default-extensions/less.js +2 -2
- package/dist/default-extensions/log.js +1 -1
- package/dist/default-extensions/lua.js +2 -2
- package/dist/default-extensions/make.js +2 -2
- package/dist/default-extensions/markdown-basics.js +3 -3
- package/dist/default-extensions/markdown-language-features.js +11 -11
- package/dist/default-extensions/markdown-math.js +27 -27
- package/dist/default-extensions/media-preview.js +11 -11
- package/dist/default-extensions/merge-conflict.js +2 -2
- package/dist/default-extensions/microsoft-authentication.js +2 -2
- package/dist/default-extensions/npm/npmBrowserMain.js.map +1 -1
- package/dist/default-extensions/npm.js +2 -2
- package/dist/default-extensions/objective-c.js +3 -3
- package/dist/default-extensions/perl.js +4 -4
- package/dist/default-extensions/php.js +4 -4
- package/dist/default-extensions/powershell.js +2 -2
- package/dist/default-extensions/pug.js +2 -2
- package/dist/default-extensions/python.js +3 -3
- package/dist/default-extensions/r.js +2 -2
- package/dist/default-extensions/razor.js +2 -2
- package/dist/default-extensions/references-view.js +2 -2
- package/dist/default-extensions/restructuredtext.js +2 -2
- package/dist/default-extensions/ruby.js +2 -2
- package/dist/default-extensions/rust.js +2 -2
- package/dist/default-extensions/scss.js +3 -3
- package/dist/default-extensions/search-result.js +3 -3
- package/dist/default-extensions/shaderlab.js +2 -2
- package/dist/default-extensions/shellscript.js +2 -2
- package/dist/default-extensions/simple-browser.js +5 -5
- package/dist/default-extensions/sql.js +2 -2
- package/dist/default-extensions/swift.js +3 -3
- package/dist/default-extensions/theme-abyss.js +1 -1
- package/dist/default-extensions/theme-defaults.js +19 -19
- package/dist/default-extensions/theme-kimbie-dark.js +1 -1
- package/dist/default-extensions/theme-monokai-dimmed.js +1 -1
- package/dist/default-extensions/theme-monokai.js +1 -1
- package/dist/default-extensions/theme-quietlight.js +1 -1
- package/dist/default-extensions/theme-red.js +1 -1
- package/dist/default-extensions/theme-seti.js +2 -2
- package/dist/default-extensions/theme-solarized-dark.js +1 -1
- package/dist/default-extensions/theme-solarized-light.js +1 -1
- package/dist/default-extensions/theme-tomorrow-night-blue.js +1 -1
- package/dist/default-extensions/typescript-basics.js +6 -6
- package/dist/default-extensions/typescript-language-features/tsserver.web.js.map +1 -1
- package/dist/default-extensions/typescript-language-features.js +87 -87
- package/dist/default-extensions/vb.js +3 -3
- package/dist/default-extensions/vscode-colorize-tests.js +2 -2
- package/dist/default-extensions/vscode-test-resolver.js +2 -2
- package/dist/default-extensions/xml.js +4 -4
- package/dist/default-extensions/yaml.js +2 -2
- package/dist/extension-tools.js +221 -1
- package/dist/extensions.js +2 -2
- package/dist/missing-services.js +0 -2
- package/dist/service-override/extensions.js +1 -1
- package/dist/service-override/textmate.js +1 -1
- package/dist/service-override/views.js +4 -5
- package/dist/services.d.ts +3 -2
- package/dist/services.js +8 -2
- package/dist/vscode/vs/platform/audioCues/browser/media/all.mp3.js +17 -17
- package/dist/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js +1 -2
- package/monaco-editor-treemending.patch +935 -935
- package/package.json +3 -3
- package/dist/assets/group1-shard1of1.bin +0 -0
- package/dist/assets/model.json +0 -1
- package/dist/service-override/languageDetectionWorker.d.ts +0 -5
- package/dist/service-override/languageDetectionWorker.js +0 -15
- package/dist/vscode/vs/platform/diagnostics/common/diagnostics.js +0 -27
- package/dist/vscode/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js +0 -132
- package/dist/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys.js +0 -3
- package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker.js +0 -173
- package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js +0 -257
- package/dist/workers/languageDetection.worker.js +0 -8
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import '../missing-services.js';
|
|
2
|
-
import { SyncDescriptor } from 'monaco-editor/esm/vs/platform/instantiation/common/descriptors.js';
|
|
3
|
-
import { LanguageDetectionService } from '../vscode/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js';
|
|
4
|
-
import { ILanguageDetectionService } from '../vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js';
|
|
5
|
-
import { registerAssets } from '../assets.js';
|
|
6
|
-
registerAssets({
|
|
7
|
-
'vs/../../node_modules/@vscode/vscode-languagedetection/model/model.json': new URL(new URL('../assets/model.json', import.meta.url).href, import.meta.url).href,
|
|
8
|
-
'vs/../../node_modules/@vscode/vscode-languagedetection/model/group1-shard1of1.bin': new URL(new URL('../assets/group1-shard1of1.bin', import.meta.url).href, import.meta.url).href
|
|
9
|
-
});
|
|
10
|
-
function getServiceOverride() {
|
|
11
|
-
return {
|
|
12
|
-
[( ILanguageDetectionService.toString())]: new SyncDescriptor(LanguageDetectionService)
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
export { getServiceOverride as default };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
|
|
2
|
-
const ID = 'diagnosticsService';
|
|
3
|
-
const IDiagnosticsService = ( createDecorator(ID));
|
|
4
|
-
class NullDiagnosticsService {
|
|
5
|
-
async getPerformanceInfo(mainProcessInfo, remoteInfo) {
|
|
6
|
-
return {};
|
|
7
|
-
}
|
|
8
|
-
async getSystemInfo(mainProcessInfo, remoteInfo) {
|
|
9
|
-
return {
|
|
10
|
-
processArgs: 'nullProcessArgs',
|
|
11
|
-
gpuStatus: 'nullGpuStatus',
|
|
12
|
-
screenReader: 'nullScreenReader',
|
|
13
|
-
remoteData: [],
|
|
14
|
-
os: 'nullOs',
|
|
15
|
-
memory: 'nullMemory',
|
|
16
|
-
vmHint: 'nullVmHint',
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
async getDiagnostics(mainProcessInfo, remoteInfo) {
|
|
20
|
-
return '';
|
|
21
|
-
}
|
|
22
|
-
async getWorkspaceFileExtensions(workspace) {
|
|
23
|
-
return { extensions: [] };
|
|
24
|
-
}
|
|
25
|
-
async reportWorkspaceStats(workspace) { }
|
|
26
|
-
}
|
|
27
|
-
export { ID, IDiagnosticsService, NullDiagnosticsService };
|
package/dist/vscode/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
|
|
2
|
-
import { DisposableStore } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
|
|
3
|
-
import { getCodeEditor } from 'monaco-editor/esm/vs/editor/browser/editorBrowser.js';
|
|
4
|
-
import { localize } from 'monaco-editor/esm/vs/nls.js';
|
|
5
|
-
import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
|
|
6
|
-
import { Extensions } from '../../../common/contributions.js';
|
|
7
|
-
import { IEditorService } from '../../../services/editor/common/editorService.js';
|
|
8
|
-
import { IStatusbarService } from '../../../services/statusbar/browser/statusbar.js';
|
|
9
|
-
import { ILanguageDetectionService, LanguageDetectionLanguageEventSource } from '../../../services/languageDetection/common/languageDetectionWorkerService.js';
|
|
10
|
-
import { ThrottledDelayer } from 'monaco-editor/esm/vs/base/common/async.js';
|
|
11
|
-
import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
|
|
12
|
-
import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
|
|
13
|
-
import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
|
|
14
|
-
import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
|
|
15
|
-
import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
|
|
16
|
-
import { NOTEBOOK_EDITOR_EDITABLE } from '../../notebook/common/notebookContextKeys.js';
|
|
17
|
-
import { EditorContextKeys } from 'monaco-editor/esm/vs/editor/common/editorContextKeys.js';
|
|
18
|
-
import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
|
|
19
|
-
import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
|
|
20
|
-
const detectLanguageCommandId = 'editor.detectLanguage';
|
|
21
|
-
let LanguageDetectionStatusContribution = class LanguageDetectionStatusContribution {
|
|
22
|
-
constructor(_languageDetectionService, _statusBarService, _configurationService, _editorService, _languageService, _keybindingService) {
|
|
23
|
-
this._languageDetectionService = _languageDetectionService;
|
|
24
|
-
this._statusBarService = _statusBarService;
|
|
25
|
-
this._configurationService = _configurationService;
|
|
26
|
-
this._editorService = _editorService;
|
|
27
|
-
this._languageService = _languageService;
|
|
28
|
-
this._keybindingService = _keybindingService;
|
|
29
|
-
this._disposables = ( new DisposableStore());
|
|
30
|
-
this._delayer = ( new ThrottledDelayer(1000));
|
|
31
|
-
this._renderDisposables = ( new DisposableStore());
|
|
32
|
-
_editorService.onDidActiveEditorChange(() => this._update(true), this, this._disposables);
|
|
33
|
-
this._update(false);
|
|
34
|
-
}
|
|
35
|
-
dispose() {
|
|
36
|
-
this._disposables.dispose();
|
|
37
|
-
this._delayer.dispose();
|
|
38
|
-
this._combinedEntry?.dispose();
|
|
39
|
-
this._renderDisposables.dispose();
|
|
40
|
-
}
|
|
41
|
-
_update(clear) {
|
|
42
|
-
if (clear) {
|
|
43
|
-
this._combinedEntry?.dispose();
|
|
44
|
-
this._combinedEntry = undefined;
|
|
45
|
-
}
|
|
46
|
-
this._delayer.trigger(() => this._doUpdate());
|
|
47
|
-
}
|
|
48
|
-
async _doUpdate() {
|
|
49
|
-
const editor = getCodeEditor(this._editorService.activeTextEditorControl);
|
|
50
|
-
this._renderDisposables.clear();
|
|
51
|
-
editor?.onDidChangeModelLanguage(() => this._update(true), this, this._renderDisposables);
|
|
52
|
-
editor?.onDidChangeModelContent(() => this._update(false), this, this._renderDisposables);
|
|
53
|
-
const editorModel = editor?.getModel();
|
|
54
|
-
const editorUri = editorModel?.uri;
|
|
55
|
-
const existingId = editorModel?.getLanguageId();
|
|
56
|
-
const enablementConfig = this._configurationService.getValue('workbench.editor.languageDetectionHints');
|
|
57
|
-
const enabled = typeof enablementConfig === 'object' && enablementConfig?.untitledEditors;
|
|
58
|
-
const disableLightbulb = !enabled || editorUri?.scheme !== Schemas.untitled || !existingId;
|
|
59
|
-
if (disableLightbulb || !editorUri) {
|
|
60
|
-
this._combinedEntry?.dispose();
|
|
61
|
-
this._combinedEntry = undefined;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const lang = await this._languageDetectionService.detectLanguage(editorUri);
|
|
65
|
-
const skip = { 'jsonc': 'json' };
|
|
66
|
-
const existing = editorModel.getLanguageId();
|
|
67
|
-
if (lang && lang !== existing && skip[existing] !== lang) {
|
|
68
|
-
const detectedName = this._languageService.getLanguageName(lang) || lang;
|
|
69
|
-
let tooltip = ( localize('status.autoDetectLanguage', "Accept Detected Language: {0}", detectedName));
|
|
70
|
-
const keybinding = this._keybindingService.lookupKeybinding(detectLanguageCommandId);
|
|
71
|
-
const label = keybinding?.getLabel();
|
|
72
|
-
if (label) {
|
|
73
|
-
tooltip += ` (${label})`;
|
|
74
|
-
}
|
|
75
|
-
const props = {
|
|
76
|
-
name: ( localize('langDetection.name', "Language Detection")),
|
|
77
|
-
ariaLabel: ( localize('langDetection.aria', "Change to Detected Language: {0}", lang)),
|
|
78
|
-
tooltip,
|
|
79
|
-
command: detectLanguageCommandId,
|
|
80
|
-
text: '$(lightbulb-autofix)',
|
|
81
|
-
};
|
|
82
|
-
if (!this._combinedEntry) {
|
|
83
|
-
this._combinedEntry = this._statusBarService.addEntry(props, LanguageDetectionStatusContribution._id, 1 , { id: 'status.editor.mode', alignment: 1 , compact: true });
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
this._combinedEntry.update(props);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
this._combinedEntry?.dispose();
|
|
91
|
-
this._combinedEntry = undefined;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
LanguageDetectionStatusContribution._id = 'status.languageDetectionStatus';
|
|
97
|
-
LanguageDetectionStatusContribution = ( __decorate([
|
|
98
|
-
( __param(0, ILanguageDetectionService)),
|
|
99
|
-
( __param(1, IStatusbarService)),
|
|
100
|
-
( __param(2, IConfigurationService)),
|
|
101
|
-
( __param(3, IEditorService)),
|
|
102
|
-
( __param(4, ILanguageService)),
|
|
103
|
-
( __param(5, IKeybindingService))
|
|
104
|
-
], LanguageDetectionStatusContribution));
|
|
105
|
-
( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(LanguageDetectionStatusContribution, 3 );
|
|
106
|
-
registerAction2(class extends Action2 {
|
|
107
|
-
constructor() {
|
|
108
|
-
super({
|
|
109
|
-
id: detectLanguageCommandId,
|
|
110
|
-
title: { value: ( localize('detectlang', 'Detect Language from Content')), original: 'Detect Language from Content' },
|
|
111
|
-
f1: true,
|
|
112
|
-
precondition: ( ContextKeyExpr.and(( NOTEBOOK_EDITOR_EDITABLE.toNegated()), EditorContextKeys.editorTextFocus)),
|
|
113
|
-
keybinding: { primary: 34 | 512 | 1024 , weight: 200 }
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
async run(accessor) {
|
|
117
|
-
const editorService = accessor.get(IEditorService);
|
|
118
|
-
const languageDetectionService = accessor.get(ILanguageDetectionService);
|
|
119
|
-
const editor = getCodeEditor(editorService.activeTextEditorControl);
|
|
120
|
-
const notificationService = accessor.get(INotificationService);
|
|
121
|
-
const editorUri = editor?.getModel()?.uri;
|
|
122
|
-
if (editorUri) {
|
|
123
|
-
const lang = await languageDetectionService.detectLanguage(editorUri);
|
|
124
|
-
if (lang) {
|
|
125
|
-
editor.getModel()?.setLanguage(lang, LanguageDetectionLanguageEventSource);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
notificationService.warn(( localize('noDetection', "Unable to detect editor language")));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
});
|
package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker.js
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { ModelOperations } from '@vscode/vscode-languagedetection';
|
|
2
|
-
import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
|
|
3
|
-
import { EditorSimpleWorker } from 'monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js';
|
|
4
|
-
function create(host) {
|
|
5
|
-
return ( new LanguageDetectionSimpleWorker(host, null));
|
|
6
|
-
}
|
|
7
|
-
class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this._loadFailed = false;
|
|
11
|
-
this.modelIdToCoreId = ( new Map());
|
|
12
|
-
}
|
|
13
|
-
async detectLanguage(uri, langBiases, preferHistory, supportedLangs) {
|
|
14
|
-
const languages = [];
|
|
15
|
-
const confidences = [];
|
|
16
|
-
const stopWatch = ( new StopWatch());
|
|
17
|
-
const documentTextSample = this.getTextForDetection(uri);
|
|
18
|
-
if (!documentTextSample) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const neuralResolver = async () => {
|
|
22
|
-
for await (const language of this.detectLanguagesImpl(documentTextSample)) {
|
|
23
|
-
if (!( this.modelIdToCoreId.has(language.languageId))) {
|
|
24
|
-
this.modelIdToCoreId.set(language.languageId, await this._host.fhr('getLanguageId', [language.languageId]));
|
|
25
|
-
}
|
|
26
|
-
const coreId = this.modelIdToCoreId.get(language.languageId);
|
|
27
|
-
if (coreId && (!supportedLangs?.length || supportedLangs.includes(coreId))) {
|
|
28
|
-
languages.push(coreId);
|
|
29
|
-
confidences.push(language.confidence);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
stopWatch.stop();
|
|
33
|
-
if (languages.length) {
|
|
34
|
-
this._host.fhr('sendTelemetryEvent', [languages, confidences, stopWatch.elapsed()]);
|
|
35
|
-
return languages[0];
|
|
36
|
-
}
|
|
37
|
-
return undefined;
|
|
38
|
-
};
|
|
39
|
-
const neural = await neuralResolver();
|
|
40
|
-
if (neural) {
|
|
41
|
-
return neural;
|
|
42
|
-
}
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
getTextForDetection(uri) {
|
|
46
|
-
const editorModel = this._getModel(uri);
|
|
47
|
-
if (!editorModel) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const end = editorModel.positionAt(10000);
|
|
51
|
-
const content = editorModel.getValueInRange({
|
|
52
|
-
startColumn: 1,
|
|
53
|
-
startLineNumber: 1,
|
|
54
|
-
endColumn: end.column,
|
|
55
|
-
endLineNumber: end.lineNumber
|
|
56
|
-
});
|
|
57
|
-
return content;
|
|
58
|
-
}
|
|
59
|
-
async getModelOperations() {
|
|
60
|
-
if (this._modelOperations) {
|
|
61
|
-
return this._modelOperations;
|
|
62
|
-
}
|
|
63
|
-
this._modelOperations = ( new ModelOperations({
|
|
64
|
-
modelJsonLoaderFunc: async () => {
|
|
65
|
-
const response = await fetch(await this._host.fhr('getModelJsonUri', []));
|
|
66
|
-
try {
|
|
67
|
-
const modelJSON = await response.json();
|
|
68
|
-
return modelJSON;
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
const message = `Failed to parse model JSON.`;
|
|
72
|
-
throw new Error(message);
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
weightsLoaderFunc: async () => {
|
|
76
|
-
const response = await fetch(await this._host.fhr('getWeightsUri', []));
|
|
77
|
-
const buffer = await response.arrayBuffer();
|
|
78
|
-
return buffer;
|
|
79
|
-
}
|
|
80
|
-
}));
|
|
81
|
-
return this._modelOperations;
|
|
82
|
-
}
|
|
83
|
-
adjustLanguageConfidence(modelResult) {
|
|
84
|
-
switch (modelResult.languageId) {
|
|
85
|
-
case 'js':
|
|
86
|
-
case 'html':
|
|
87
|
-
case 'json':
|
|
88
|
-
case 'ts':
|
|
89
|
-
case 'css':
|
|
90
|
-
case 'py':
|
|
91
|
-
case 'xml':
|
|
92
|
-
case 'php':
|
|
93
|
-
modelResult.confidence += LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket1;
|
|
94
|
-
break;
|
|
95
|
-
case 'cpp':
|
|
96
|
-
case 'sh':
|
|
97
|
-
case 'java':
|
|
98
|
-
case 'cs':
|
|
99
|
-
case 'c':
|
|
100
|
-
modelResult.confidence += LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket2;
|
|
101
|
-
break;
|
|
102
|
-
case 'bat':
|
|
103
|
-
case 'ini':
|
|
104
|
-
case 'makefile':
|
|
105
|
-
case 'sql':
|
|
106
|
-
case 'csv':
|
|
107
|
-
case 'toml':
|
|
108
|
-
modelResult.confidence -= LanguageDetectionSimpleWorker.negativeConfidenceCorrection;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
return modelResult;
|
|
112
|
-
}
|
|
113
|
-
async *detectLanguagesImpl(content) {
|
|
114
|
-
if (this._loadFailed) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
let modelOperations;
|
|
118
|
-
try {
|
|
119
|
-
modelOperations = await this.getModelOperations();
|
|
120
|
-
}
|
|
121
|
-
catch (e) {
|
|
122
|
-
console.log(e);
|
|
123
|
-
this._loadFailed = true;
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
let modelResults;
|
|
127
|
-
try {
|
|
128
|
-
modelResults = await modelOperations.runModel(content);
|
|
129
|
-
}
|
|
130
|
-
catch (e) {
|
|
131
|
-
console.warn(e);
|
|
132
|
-
}
|
|
133
|
-
if (!modelResults
|
|
134
|
-
|| modelResults.length === 0
|
|
135
|
-
|| modelResults[0].confidence < LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
const firstModelResult = this.adjustLanguageConfidence(modelResults[0]);
|
|
139
|
-
if (firstModelResult.confidence < LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const possibleLanguages = [firstModelResult];
|
|
143
|
-
for (let current of modelResults) {
|
|
144
|
-
if (current === firstModelResult) {
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
current = this.adjustLanguageConfidence(current);
|
|
148
|
-
const currentHighest = possibleLanguages[possibleLanguages.length - 1];
|
|
149
|
-
if (currentHighest.confidence - current.confidence >= LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
|
|
150
|
-
while (possibleLanguages.length) {
|
|
151
|
-
yield possibleLanguages.shift();
|
|
152
|
-
}
|
|
153
|
-
if (current.confidence > LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
|
|
154
|
-
possibleLanguages.push(current);
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
if (current.confidence > LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
|
|
161
|
-
possibleLanguages.push(current);
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
LanguageDetectionSimpleWorker.expectedRelativeConfidence = 0.2;
|
|
170
|
-
LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket1 = 0.05;
|
|
171
|
-
LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket2 = 0.025;
|
|
172
|
-
LanguageDetectionSimpleWorker.negativeConfidenceCorrection = 0.5;
|
|
173
|
-
export { LanguageDetectionSimpleWorker, create };
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
|
|
2
|
-
import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
|
|
3
|
-
import { LanguageDetectionStatsId } from '../common/languageDetectionWorkerService.js';
|
|
4
|
-
import { FileAccess, Schemas, nodeModulesPath, nodeModulesAsarPath } from 'monaco-editor/esm/vs/base/common/network.js';
|
|
5
|
-
import { IWorkbenchEnvironmentService } from '../../environment/common/environmentService.js';
|
|
6
|
-
import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
|
|
7
|
-
import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
|
|
8
|
-
import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
|
|
9
|
-
import { isWeb } from 'monaco-editor/esm/vs/base/common/platform.js';
|
|
10
|
-
import { IModelService } from 'monaco-editor/esm/vs/editor/common/services/model.js';
|
|
11
|
-
import { SimpleWorkerClient } from 'monaco-editor/esm/vs/base/common/worker/simpleWorker.js';
|
|
12
|
-
import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
|
|
13
|
-
import { EditorWorkerClient, EditorWorkerHost } from 'monaco-editor/esm/vs/editor/browser/services/editorWorkerService.js';
|
|
14
|
-
import { ILanguageConfigurationService } from 'monaco-editor/esm/vs/editor/common/languages/languageConfigurationRegistry.js';
|
|
15
|
-
import { IDiagnosticsService } from '../../../../platform/diagnostics/common/diagnostics.js';
|
|
16
|
-
import { IWorkspaceContextService } from 'monaco-editor/esm/vs/platform/workspace/common/workspace.js';
|
|
17
|
-
import { IEditorService } from '../../editor/common/editorService.js';
|
|
18
|
-
import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
|
|
19
|
-
import { LRUCache } from 'monaco-editor/esm/vs/base/common/map.js';
|
|
20
|
-
import { ILogService } from 'monaco-editor/esm/vs/platform/log/common/log.js';
|
|
21
|
-
const TOP_LANG_COUNTS = 12;
|
|
22
|
-
const regexpModuleLocation = `${nodeModulesPath}/vscode-regexp-languagedetection`;
|
|
23
|
-
const regexpModuleLocationAsar = `${nodeModulesAsarPath}/vscode-regexp-languagedetection`;
|
|
24
|
-
const moduleLocation = `${nodeModulesPath}/@vscode/vscode-languagedetection`;
|
|
25
|
-
const moduleLocationAsar = `${nodeModulesAsarPath}/@vscode/vscode-languagedetection`;
|
|
26
|
-
let LanguageDetectionService = class LanguageDetectionService extends Disposable {
|
|
27
|
-
constructor(_environmentService, languageService, _configurationService, _diagnosticsService, _workspaceContextService, modelService, _editorService, telemetryService, storageService, _logService, languageConfigurationService) {
|
|
28
|
-
super();
|
|
29
|
-
this._environmentService = _environmentService;
|
|
30
|
-
this._configurationService = _configurationService;
|
|
31
|
-
this._diagnosticsService = _diagnosticsService;
|
|
32
|
-
this._workspaceContextService = _workspaceContextService;
|
|
33
|
-
this._editorService = _editorService;
|
|
34
|
-
this._logService = _logService;
|
|
35
|
-
this.hasResolvedWorkspaceLanguageIds = false;
|
|
36
|
-
this.workspaceLanguageIds = ( new Set());
|
|
37
|
-
this.sessionOpenedLanguageIds = ( new Set());
|
|
38
|
-
this.historicalGlobalOpenedLanguageIds = ( new LRUCache(TOP_LANG_COUNTS));
|
|
39
|
-
this.historicalWorkspaceOpenedLanguageIds = ( new LRUCache(TOP_LANG_COUNTS));
|
|
40
|
-
this.dirtyBiases = true;
|
|
41
|
-
this.langBiases = {};
|
|
42
|
-
this._languageDetectionWorkerClient = ( new LanguageDetectionWorkerClient(
|
|
43
|
-
modelService,
|
|
44
|
-
languageService,
|
|
45
|
-
telemetryService,
|
|
46
|
-
this._environmentService.isBuilt && !isWeb
|
|
47
|
-
? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/dist/lib/index.js`)).toString(true))
|
|
48
|
-
: ( ( FileAccess.asBrowserUri(`${moduleLocation}/dist/lib/index.js`)).toString(true)),
|
|
49
|
-
this._environmentService.isBuilt && !isWeb
|
|
50
|
-
? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/model/model.json`)).toString(true))
|
|
51
|
-
: ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/model.json`)).toString(true)),
|
|
52
|
-
this._environmentService.isBuilt && !isWeb
|
|
53
|
-
? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/model/group1-shard1of1.bin`)).toString(true))
|
|
54
|
-
: ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/group1-shard1of1.bin`)).toString(true)),
|
|
55
|
-
this._environmentService.isBuilt && !isWeb
|
|
56
|
-
? ( ( FileAccess.asBrowserUri(`${regexpModuleLocationAsar}/dist/index.js`)).toString(true))
|
|
57
|
-
: ( ( FileAccess.asBrowserUri(`${regexpModuleLocation}/dist/index.js`)).toString(true)),
|
|
58
|
-
languageConfigurationService
|
|
59
|
-
));
|
|
60
|
-
this.initEditorOpenedListeners(storageService);
|
|
61
|
-
}
|
|
62
|
-
async resolveWorkspaceLanguageIds() {
|
|
63
|
-
if (this.hasResolvedWorkspaceLanguageIds) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.hasResolvedWorkspaceLanguageIds = true;
|
|
67
|
-
const fileExtensions = await this._diagnosticsService.getWorkspaceFileExtensions(this._workspaceContextService.getWorkspace());
|
|
68
|
-
let count = 0;
|
|
69
|
-
for (const ext of fileExtensions.extensions) {
|
|
70
|
-
const langId = this._languageDetectionWorkerClient.getLanguageId(ext);
|
|
71
|
-
if (langId && count < TOP_LANG_COUNTS) {
|
|
72
|
-
this.workspaceLanguageIds.add(langId);
|
|
73
|
-
count++;
|
|
74
|
-
if (count > TOP_LANG_COUNTS) {
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
this.dirtyBiases = true;
|
|
80
|
-
}
|
|
81
|
-
isEnabledForLanguage(languageId) {
|
|
82
|
-
return !!languageId && this._configurationService.getValue(LanguageDetectionService.enablementSettingKey, { overrideIdentifier: languageId });
|
|
83
|
-
}
|
|
84
|
-
getLanguageBiases() {
|
|
85
|
-
if (!this.dirtyBiases) {
|
|
86
|
-
return this.langBiases;
|
|
87
|
-
}
|
|
88
|
-
const biases = {};
|
|
89
|
-
this.sessionOpenedLanguageIds.forEach(lang => biases[lang] = (biases[lang] ?? 0) + 7);
|
|
90
|
-
this.workspaceLanguageIds.forEach(lang => biases[lang] = (biases[lang] ?? 0) + 5);
|
|
91
|
-
[...( this.historicalWorkspaceOpenedLanguageIds.keys())].forEach(lang => biases[lang] = (biases[lang] ?? 0) + 3);
|
|
92
|
-
[...( this.historicalGlobalOpenedLanguageIds.keys())].forEach(lang => biases[lang] = (biases[lang] ?? 0) + 1);
|
|
93
|
-
this._logService.trace('Session Languages:', JSON.stringify([...this.sessionOpenedLanguageIds]));
|
|
94
|
-
this._logService.trace('Workspace Languages:', JSON.stringify([...this.workspaceLanguageIds]));
|
|
95
|
-
this._logService.trace('Historical Workspace Opened Languages:', JSON.stringify([...( this.historicalWorkspaceOpenedLanguageIds.keys())]));
|
|
96
|
-
this._logService.trace('Historical Globally Opened Languages:', JSON.stringify([...( this.historicalGlobalOpenedLanguageIds.keys())]));
|
|
97
|
-
this._logService.trace('Computed Language Detection Biases:', JSON.stringify(biases));
|
|
98
|
-
this.dirtyBiases = false;
|
|
99
|
-
this.langBiases = biases;
|
|
100
|
-
return biases;
|
|
101
|
-
}
|
|
102
|
-
async detectLanguage(resource, supportedLangs) {
|
|
103
|
-
const useHistory = this._configurationService.getValue(LanguageDetectionService.historyBasedEnablementConfig);
|
|
104
|
-
const preferHistory = this._configurationService.getValue(LanguageDetectionService.preferHistoryConfig);
|
|
105
|
-
if (useHistory) {
|
|
106
|
-
await this.resolveWorkspaceLanguageIds();
|
|
107
|
-
}
|
|
108
|
-
const biases = useHistory ? this.getLanguageBiases() : undefined;
|
|
109
|
-
return this._languageDetectionWorkerClient.detectLanguage(resource, biases, preferHistory, supportedLangs);
|
|
110
|
-
}
|
|
111
|
-
initEditorOpenedListeners(storageService) {
|
|
112
|
-
try {
|
|
113
|
-
const globalLangHistoryData = JSON.parse(storageService.get(LanguageDetectionService.globalOpenedLanguagesStorageKey, 0 , '[]'));
|
|
114
|
-
this.historicalGlobalOpenedLanguageIds.fromJSON(globalLangHistoryData);
|
|
115
|
-
}
|
|
116
|
-
catch (e) {
|
|
117
|
-
console.error(e);
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
const workspaceLangHistoryData = JSON.parse(storageService.get(LanguageDetectionService.workspaceOpenedLanguagesStorageKey, 1 , '[]'));
|
|
121
|
-
this.historicalWorkspaceOpenedLanguageIds.fromJSON(workspaceLangHistoryData);
|
|
122
|
-
}
|
|
123
|
-
catch (e) {
|
|
124
|
-
console.error(e);
|
|
125
|
-
}
|
|
126
|
-
this._register(this._editorService.onDidActiveEditorChange(() => {
|
|
127
|
-
const activeLanguage = this._editorService.activeTextEditorLanguageId;
|
|
128
|
-
if (activeLanguage && this._editorService.activeEditor?.resource?.scheme !== Schemas.untitled) {
|
|
129
|
-
this.sessionOpenedLanguageIds.add(activeLanguage);
|
|
130
|
-
this.historicalGlobalOpenedLanguageIds.set(activeLanguage, true);
|
|
131
|
-
this.historicalWorkspaceOpenedLanguageIds.set(activeLanguage, true);
|
|
132
|
-
storageService.store(LanguageDetectionService.globalOpenedLanguagesStorageKey, JSON.stringify(this.historicalGlobalOpenedLanguageIds.toJSON()), 0 , 1 );
|
|
133
|
-
storageService.store(LanguageDetectionService.workspaceOpenedLanguagesStorageKey, JSON.stringify(this.historicalWorkspaceOpenedLanguageIds.toJSON()), 1 , 1 );
|
|
134
|
-
this.dirtyBiases = true;
|
|
135
|
-
}
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
LanguageDetectionService.enablementSettingKey = 'workbench.editor.languageDetection';
|
|
140
|
-
LanguageDetectionService.historyBasedEnablementConfig = 'workbench.editor.historyBasedLanguageDetection';
|
|
141
|
-
LanguageDetectionService.preferHistoryConfig = 'workbench.editor.preferHistoryBasedLanguageDetection';
|
|
142
|
-
LanguageDetectionService.workspaceOpenedLanguagesStorageKey = 'workbench.editor.languageDetectionOpenedLanguages.workspace';
|
|
143
|
-
LanguageDetectionService.globalOpenedLanguagesStorageKey = 'workbench.editor.languageDetectionOpenedLanguages.global';
|
|
144
|
-
LanguageDetectionService = ( __decorate([
|
|
145
|
-
( __param(0, IWorkbenchEnvironmentService)),
|
|
146
|
-
( __param(1, ILanguageService)),
|
|
147
|
-
( __param(2, IConfigurationService)),
|
|
148
|
-
( __param(3, IDiagnosticsService)),
|
|
149
|
-
( __param(4, IWorkspaceContextService)),
|
|
150
|
-
( __param(5, IModelService)),
|
|
151
|
-
( __param(6, IEditorService)),
|
|
152
|
-
( __param(7, ITelemetryService)),
|
|
153
|
-
( __param(8, IStorageService)),
|
|
154
|
-
( __param(9, ILogService)),
|
|
155
|
-
( __param(10, ILanguageConfigurationService))
|
|
156
|
-
], LanguageDetectionService));
|
|
157
|
-
class LanguageDetectionWorkerClient extends EditorWorkerClient {
|
|
158
|
-
constructor(modelService, _languageService, _telemetryService, _indexJsUri, _modelJsonUri, _weightsUri, _regexpModelUri, languageConfigurationService) {
|
|
159
|
-
super(modelService, true, 'languageDetectionWorkerService', languageConfigurationService);
|
|
160
|
-
this._languageService = _languageService;
|
|
161
|
-
this._telemetryService = _telemetryService;
|
|
162
|
-
this._indexJsUri = _indexJsUri;
|
|
163
|
-
this._modelJsonUri = _modelJsonUri;
|
|
164
|
-
this._weightsUri = _weightsUri;
|
|
165
|
-
this._regexpModelUri = _regexpModelUri;
|
|
166
|
-
}
|
|
167
|
-
_getOrCreateLanguageDetectionWorker() {
|
|
168
|
-
if (this.workerPromise) {
|
|
169
|
-
return this.workerPromise;
|
|
170
|
-
}
|
|
171
|
-
this.workerPromise = ( new Promise((resolve, reject) => {
|
|
172
|
-
resolve(this._register(( new SimpleWorkerClient(
|
|
173
|
-
this._workerFactory,
|
|
174
|
-
'vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker',
|
|
175
|
-
( new EditorWorkerHost(this))
|
|
176
|
-
))));
|
|
177
|
-
}));
|
|
178
|
-
return this.workerPromise;
|
|
179
|
-
}
|
|
180
|
-
_guessLanguageIdByUri(uri) {
|
|
181
|
-
const guess = this._languageService.guessLanguageIdByFilepathOrFirstLine(uri);
|
|
182
|
-
if (guess && guess !== 'unknown') {
|
|
183
|
-
return guess;
|
|
184
|
-
}
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
async _getProxy() {
|
|
188
|
-
return (await this._getOrCreateLanguageDetectionWorker()).getProxyObject();
|
|
189
|
-
}
|
|
190
|
-
async fhr(method, args) {
|
|
191
|
-
switch (method) {
|
|
192
|
-
case 'getIndexJsUri':
|
|
193
|
-
return this.getIndexJsUri();
|
|
194
|
-
case 'getModelJsonUri':
|
|
195
|
-
return this.getModelJsonUri();
|
|
196
|
-
case 'getWeightsUri':
|
|
197
|
-
return this.getWeightsUri();
|
|
198
|
-
case 'getRegexpModelUri':
|
|
199
|
-
return this.getRegexpModelUri();
|
|
200
|
-
case 'getLanguageId':
|
|
201
|
-
return this.getLanguageId(args[0]);
|
|
202
|
-
case 'sendTelemetryEvent':
|
|
203
|
-
return this.sendTelemetryEvent(args[0], args[1], args[2]);
|
|
204
|
-
default:
|
|
205
|
-
return super.fhr(method, args);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
async getIndexJsUri() {
|
|
209
|
-
return this._indexJsUri;
|
|
210
|
-
}
|
|
211
|
-
getLanguageId(languageIdOrExt) {
|
|
212
|
-
if (!languageIdOrExt) {
|
|
213
|
-
return undefined;
|
|
214
|
-
}
|
|
215
|
-
if (this._languageService.isRegisteredLanguageId(languageIdOrExt)) {
|
|
216
|
-
return languageIdOrExt;
|
|
217
|
-
}
|
|
218
|
-
const guessed = this._guessLanguageIdByUri(URI.file(`file.${languageIdOrExt}`));
|
|
219
|
-
if (!guessed || guessed === 'unknown') {
|
|
220
|
-
return undefined;
|
|
221
|
-
}
|
|
222
|
-
return guessed;
|
|
223
|
-
}
|
|
224
|
-
async getModelJsonUri() {
|
|
225
|
-
return this._modelJsonUri;
|
|
226
|
-
}
|
|
227
|
-
async getWeightsUri() {
|
|
228
|
-
return this._weightsUri;
|
|
229
|
-
}
|
|
230
|
-
async getRegexpModelUri() {
|
|
231
|
-
return this._regexpModelUri;
|
|
232
|
-
}
|
|
233
|
-
async sendTelemetryEvent(languages, confidences, timeSpent) {
|
|
234
|
-
this._telemetryService.publicLog2(LanguageDetectionStatsId, {
|
|
235
|
-
languages: languages.join(','),
|
|
236
|
-
confidences: confidences.join(','),
|
|
237
|
-
timeSpent
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
async detectLanguage(resource, langBiases, preferHistory, supportedLangs) {
|
|
241
|
-
const startTime = Date.now();
|
|
242
|
-
const quickGuess = this._guessLanguageIdByUri(resource);
|
|
243
|
-
if (quickGuess) {
|
|
244
|
-
return quickGuess;
|
|
245
|
-
}
|
|
246
|
-
await this._withSyncedResources([resource]);
|
|
247
|
-
const modelId = await (await this._getProxy()).detectLanguage(( resource.toString()), langBiases, preferHistory, supportedLangs);
|
|
248
|
-
const languageId = this.getLanguageId(modelId);
|
|
249
|
-
const LanguageDetectionStatsId = 'automaticlanguagedetection.perf';
|
|
250
|
-
this._telemetryService.publicLog2(LanguageDetectionStatsId, {
|
|
251
|
-
timeSpent: Date.now() - startTime,
|
|
252
|
-
detection: languageId || 'unknown',
|
|
253
|
-
});
|
|
254
|
-
return languageId;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
export { LanguageDetectionService, LanguageDetectionWorkerClient };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { create } from '../vscode/vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker.js';
|
|
2
|
-
import { SimpleWorkerServer } from 'monaco-editor/esm/vs/base/common/worker/simpleWorker.js';
|
|
3
|
-
const simpleWorker = new SimpleWorkerServer((msg) => {
|
|
4
|
-
globalThis.postMessage(msg);
|
|
5
|
-
}, create);
|
|
6
|
-
globalThis.onmessage = (e) => {
|
|
7
|
-
simpleWorker.onmessage(e.data);
|
|
8
|
-
};
|