Path: blob/main/src/vs/editor/common/languages/language.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 { Event } from '../../../base/common/event.js';6import { IDisposable } from '../../../base/common/lifecycle.js';7import { URI } from '../../../base/common/uri.js';8import { ILanguageIdCodec } from '../languages.js';9import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';1011export const ILanguageService = createDecorator<ILanguageService>('languageService');1213export interface ILanguageExtensionPoint {14id: string;15extensions?: string[];16filenames?: string[];17filenamePatterns?: string[];18firstLine?: string;19aliases?: string[];20mimetypes?: string[];21configuration?: URI;22/**23* @internal24*/25icon?: ILanguageIcon;26}2728export interface ILanguageSelection {29readonly languageId: string;30readonly onDidChange: Event<string>;31}3233export interface ILanguageNameIdPair {34readonly languageName: string;35readonly languageId: string;36}3738export interface ILanguageIcon {39readonly light: URI;40readonly dark: URI;41}4243export interface ILanguageService {44readonly _serviceBrand: undefined;4546/**47* A codec which can encode and decode a string `languageId` as a number.48*/49readonly languageIdCodec: ILanguageIdCodec;5051/**52* An event emitted when basic language features are requested for the first time.53* This event is emitted when embedded languages are encountered (e.g. JS code block inside Markdown)54* or when a language is associated to a text model.55*56* **Note**: Basic language features refers to language configuration related features.57* **Note**: This event is a superset of `onDidRequestRichLanguageFeatures`58*/59onDidRequestBasicLanguageFeatures: Event<string>;6061/**62* An event emitted when rich language features are requested for the first time.63* This event is emitted when a language is associated to a text model.64*65* **Note**: Rich language features refers to tokenizers, language features based on providers, etc.66* **Note**: This event is a subset of `onDidRequestRichLanguageFeatures`67*/68onDidRequestRichLanguageFeatures: Event<string>;6970/**71* An event emitted when languages have changed.72*/73onDidChange: Event<void>;7475/**76* Register a language.77*/78registerLanguage(def: ILanguageExtensionPoint): IDisposable;7980/**81* Check if `languageId` is registered.82*/83isRegisteredLanguageId(languageId: string): boolean;8485/**86* Get a list of all registered languages.87*/88getRegisteredLanguageIds(): string[];8990/**91* Get a list of all registered languages with a name.92* If a language is explicitly registered without a name, it will not be part of the result.93* The result is sorted using by name case insensitive.94*/95getSortedRegisteredLanguageNames(): ILanguageNameIdPair[];9697/**98* Get the preferred language name for a language.99*/100getLanguageName(languageId: string): string | null;101102/**103* Get the mimetype for a language.104*/105getMimeType(languageId: string): string | null;106107/**108* Get the default icon for the language.109*/110getIcon(languageId: string): ILanguageIcon | null;111112/**113* Get all file extensions for a language.114*/115getExtensions(languageId: string): ReadonlyArray<string>;116117/**118* Get all file names for a language.119*/120getFilenames(languageId: string): ReadonlyArray<string>;121122/**123* Get all language configuration files for a language.124*/125getConfigurationFiles(languageId: string): ReadonlyArray<URI>;126127/**128* Look up a language by its name case insensitive.129*/130getLanguageIdByLanguageName(languageName: string): string | null;131132/**133* Look up a language by its mime type.134*/135getLanguageIdByMimeType(mimeType: string | null | undefined): string | null;136137/**138* Guess the language id for a resource.139*/140guessLanguageIdByFilepathOrFirstLine(resource: URI, firstLine?: string): string | null;141142/**143* Will fall back to 'plaintext' if `languageId` is unknown.144*/145createById(languageId: string | null | undefined): ILanguageSelection;146147/**148* Will fall back to 'plaintext' if `mimeType` is unknown.149*/150createByMimeType(mimeType: string | null | undefined): ILanguageSelection;151152/**153* Will fall back to 'plaintext' if the `languageId` cannot be determined.154*/155createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection;156157/**158* Request basic language features for a language.159*/160requestBasicLanguageFeatures(languageId: string): void;161162/**163* Request rich language features for a language.164*/165requestRichLanguageFeatures(languageId: string): void;166167}168169170