Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/common/languages/modesRegistry.ts
3294 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as nls from '../../../nls.js';
7
import { Emitter, Event } from '../../../base/common/event.js';
8
import { ILanguageExtensionPoint } from './language.js';
9
import { Registry } from '../../../platform/registry/common/platform.js';
10
import { Disposable, IDisposable } from '../../../base/common/lifecycle.js';
11
import { Mimes } from '../../../base/common/mime.js';
12
import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from '../../../platform/configuration/common/configurationRegistry.js';
13
14
// Define extension point ids
15
export const Extensions = {
16
ModesRegistry: 'editor.modesRegistry'
17
};
18
19
export class EditorModesRegistry extends Disposable {
20
21
private readonly _languages: ILanguageExtensionPoint[];
22
23
private readonly _onDidChangeLanguages = this._register(new Emitter<void>());
24
public readonly onDidChangeLanguages: Event<void> = this._onDidChangeLanguages.event;
25
26
constructor() {
27
super();
28
this._languages = [];
29
}
30
31
public registerLanguage(def: ILanguageExtensionPoint): IDisposable {
32
this._languages.push(def);
33
this._onDidChangeLanguages.fire(undefined);
34
return {
35
dispose: () => {
36
for (let i = 0, len = this._languages.length; i < len; i++) {
37
if (this._languages[i] === def) {
38
this._languages.splice(i, 1);
39
return;
40
}
41
}
42
}
43
};
44
}
45
46
public getLanguages(): ReadonlyArray<ILanguageExtensionPoint> {
47
return this._languages;
48
}
49
}
50
51
export const ModesRegistry = new EditorModesRegistry();
52
Registry.add(Extensions.ModesRegistry, ModesRegistry);
53
54
export const PLAINTEXT_LANGUAGE_ID = 'plaintext';
55
export const PLAINTEXT_EXTENSION = '.txt';
56
57
ModesRegistry.registerLanguage({
58
id: PLAINTEXT_LANGUAGE_ID,
59
extensions: [PLAINTEXT_EXTENSION],
60
aliases: [nls.localize('plainText.alias', "Plain Text"), 'text'],
61
mimetypes: [Mimes.text]
62
});
63
64
Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration)
65
.registerDefaultConfigurations([{
66
overrides: {
67
'[plaintext]': {
68
'editor.unicodeHighlight.ambiguousCharacters': false,
69
'editor.unicodeHighlight.invisibleCharacters': false
70
},
71
// TODO: Below is a workaround for: https://github.com/microsoft/vscode/issues/240567
72
'[go]': {
73
'editor.insertSpaces': false
74
},
75
'[makefile]': {
76
'editor.insertSpaces': false,
77
},
78
'[shellscript]': {
79
'files.eol': '\n'
80
},
81
'[yaml]': {
82
'editor.insertSpaces': true,
83
'editor.tabSize': 2
84
}
85
}
86
}]);
87
88