Path: blob/main/src/vs/editor/common/languages/modesRegistry.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as nls from '../../../nls.js';6import { Emitter, Event } from '../../../base/common/event.js';7import { ILanguageExtensionPoint } from './language.js';8import { Registry } from '../../../platform/registry/common/platform.js';9import { Disposable, IDisposable } from '../../../base/common/lifecycle.js';10import { Mimes } from '../../../base/common/mime.js';11import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from '../../../platform/configuration/common/configurationRegistry.js';1213// Define extension point ids14export const Extensions = {15ModesRegistry: 'editor.modesRegistry'16};1718export class EditorModesRegistry extends Disposable {1920private readonly _languages: ILanguageExtensionPoint[];2122private readonly _onDidChangeLanguages = this._register(new Emitter<void>());23public readonly onDidChangeLanguages: Event<void> = this._onDidChangeLanguages.event;2425constructor() {26super();27this._languages = [];28}2930public registerLanguage(def: ILanguageExtensionPoint): IDisposable {31this._languages.push(def);32this._onDidChangeLanguages.fire(undefined);33return {34dispose: () => {35for (let i = 0, len = this._languages.length; i < len; i++) {36if (this._languages[i] === def) {37this._languages.splice(i, 1);38return;39}40}41}42};43}4445public getLanguages(): ReadonlyArray<ILanguageExtensionPoint> {46return this._languages;47}48}4950export const ModesRegistry = new EditorModesRegistry();51Registry.add(Extensions.ModesRegistry, ModesRegistry);5253export const PLAINTEXT_LANGUAGE_ID = 'plaintext';54export const PLAINTEXT_EXTENSION = '.txt';5556ModesRegistry.registerLanguage({57id: PLAINTEXT_LANGUAGE_ID,58extensions: [PLAINTEXT_EXTENSION],59aliases: [nls.localize('plainText.alias', "Plain Text"), 'text'],60mimetypes: [Mimes.text]61});6263Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration)64.registerDefaultConfigurations([{65overrides: {66'[plaintext]': {67'editor.unicodeHighlight.ambiguousCharacters': false,68'editor.unicodeHighlight.invisibleCharacters': false69},70// TODO: Below is a workaround for: https://github.com/microsoft/vscode/issues/24056771'[go]': {72'editor.insertSpaces': false73},74'[makefile]': {75'editor.insertSpaces': false,76},77'[shellscript]': {78'files.eol': '\n'79},80'[yaml]': {81'editor.insertSpaces': true,82'editor.tabSize': 283}84}85}]);868788