Skip to content
This repository has been archived by the owner on Nov 5, 2021. It is now read-only.

Commit

Permalink
registerHTMLLanguageService not available in AMD version. Fixes micro…
Browse files Browse the repository at this point in the history
  • Loading branch information
aeschli committed Jun 14, 2021
1 parent 14d67a8 commit d27f333
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 71 deletions.
54 changes: 27 additions & 27 deletions monaco.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ declare namespace monaco.languages.html {
readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';
}
export interface CompletionConfiguration {
[providerId: string]: boolean;
readonly [providerId: string]: boolean;
}
export interface Options {
/**
Expand Down Expand Up @@ -113,18 +113,18 @@ declare namespace monaco.languages.html {
*/
export function registerHTMLLanguageService(
languageId: string,
options: Options,
modeConfiguration: ModeConfiguration
options?: Options,
modeConfiguration?: ModeConfiguration
): LanguageServiceRegistration;
export interface HTMLDataConfiguration {
/**
* Defines whether the standard HTML tags and attributes are shown
*/
useDefaultDataProvider?: boolean;
readonly useDefaultDataProvider?: boolean;
/**
* Provides a set of custom data providers.
*/
dataProviders?: {
readonly dataProviders?: {
[providerId: string]: HTMLDataV1;
};
}
Expand All @@ -133,40 +133,40 @@ declare namespace monaco.languages.html {
* https://github.com/microsoft/vscode-html-languageservice/blob/main/docs/customData.md
*/
export interface HTMLDataV1 {
version: 1 | 1.1;
tags?: ITagData[];
globalAttributes?: IAttributeData[];
valueSets?: IValueSet[];
readonly version: 1 | 1.1;
readonly tags?: ITagData[];
readonly globalAttributes?: IAttributeData[];
readonly valueSets?: IValueSet[];
}
export interface IReference {
name: string;
url: string;
readonly name: string;
readonly url: string;
}
export interface ITagData {
name: string;
description?: string | MarkupContent;
attributes: IAttributeData[];
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly attributes: IAttributeData[];
readonly references?: IReference[];
}
export interface IAttributeData {
name: string;
description?: string | MarkupContent;
valueSet?: string;
values?: IValueData[];
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly valueSet?: string;
readonly values?: IValueData[];
readonly references?: IReference[];
}
export interface IValueData {
name: string;
description?: string | MarkupContent;
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly references?: IReference[];
}
export interface IValueSet {
name: string;
values: IValueData[];
readonly name: string;
readonly values: IValueData[];
}
export interface MarkupContent {
kind: MarkupKind;
value: string;
readonly kind: MarkupKind;
readonly value: string;
}
export type MarkupKind = 'plaintext' | 'markdown';
}
78 changes: 34 additions & 44 deletions src/monaco.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export interface HTMLFormatConfiguration {
}

export interface CompletionConfiguration {
[providerId: string]: boolean;
readonly [providerId: string]: boolean;
}

export interface Options {
Expand Down Expand Up @@ -167,23 +167,12 @@ const formatDefaults: Required<HTMLFormatConfiguration> = {
wrapAttributes: 'auto'
};

const htmlOptionsDefault: Required<Options> = {
const optionsDefault: Required<Options> = {
format: formatDefaults,
suggest: { html5: true, angular1: true, ionic: true },
suggest: {},
data: { useDefaultDataProvider: true }
};

const handlebarOptionsDefault: Required<Options> = {
format: formatDefaults,
suggest: { html5: true },
data: { useDefaultDataProvider: true }
};

const razorOptionsDefault: Required<Options> = {
format: formatDefaults,
suggest: { html5: true, razor: true },
data: { useDefaultDataProvider: true }
};

function getConfigurationDefault(languageId: string): Required<ModeConfiguration> {
return {
Expand All @@ -208,27 +197,28 @@ const razorLanguageId = 'razor';

export const htmlLanguageService = registerHTMLLanguageService(
htmlLanguageId,
htmlOptionsDefault,
optionsDefault,
getConfigurationDefault(htmlLanguageId)
);
export const htmlDefaults = htmlLanguageService.defaults;

export const handlebarLanguageService = registerHTMLLanguageService(
handlebarsLanguageId,
handlebarOptionsDefault,
optionsDefault,
getConfigurationDefault(handlebarsLanguageId)
);
export const handlebarDefaults = handlebarLanguageService.defaults;

export const razorLanguageService = registerHTMLLanguageService(
razorLanguageId,
razorOptionsDefault,
optionsDefault,
getConfigurationDefault(razorLanguageId)
);
export const razorDefaults = razorLanguageService.defaults;

// export to the global based API
(<any>languages).html = { htmlDefaults, razorDefaults, handlebarDefaults };
(<any>languages).html = { htmlDefaults, razorDefaults, handlebarDefaults, htmlLanguageService, handlebarLanguageService, razorLanguageService, registerHTMLLanguageService };


// --- Registration to monaco editor ---

Expand All @@ -249,8 +239,8 @@ export interface LanguageServiceRegistration extends IDisposable {
*/
export function registerHTMLLanguageService(
languageId: string,
options: Options,
modeConfiguration: ModeConfiguration
options: Options = optionsDefault,
modeConfiguration: ModeConfiguration = getConfigurationDefault(languageId)
): LanguageServiceRegistration {
const defaults = new LanguageServiceDefaultsImpl(languageId, options, modeConfiguration);
let mode: IDisposable | undefined;
Expand All @@ -275,52 +265,52 @@ export interface HTMLDataConfiguration {
/**
* Defines whether the standard HTML tags and attributes are shown
*/
useDefaultDataProvider?: boolean;
readonly useDefaultDataProvider?: boolean;
/**
* Provides a set of custom data providers.
*/
dataProviders?: { [providerId: string]: HTMLDataV1 };
readonly dataProviders?: { [providerId: string]: HTMLDataV1 };
}

/**
* Custom HTML tags attributes and attribute values
* https://github.com/microsoft/vscode-html-languageservice/blob/main/docs/customData.md
*/
export interface HTMLDataV1 {
version: 1 | 1.1;
tags?: ITagData[];
globalAttributes?: IAttributeData[];
valueSets?: IValueSet[];
readonly version: 1 | 1.1;
readonly tags?: ITagData[];
readonly globalAttributes?: IAttributeData[];
readonly valueSets?: IValueSet[];
}

export interface IReference {
name: string;
url: string;
readonly name: string;
readonly url: string;
}
export interface ITagData {
name: string;
description?: string | MarkupContent;
attributes: IAttributeData[];
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly attributes: IAttributeData[];
readonly references?: IReference[];
}
export interface IAttributeData {
name: string;
description?: string | MarkupContent;
valueSet?: string;
values?: IValueData[];
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly valueSet?: string;
readonly values?: IValueData[];
readonly references?: IReference[];
}
export interface IValueData {
name: string;
description?: string | MarkupContent;
references?: IReference[];
readonly name: string;
readonly description?: string | MarkupContent;
readonly references?: IReference[];
}
export interface IValueSet {
name: string;
values: IValueData[];
readonly name: string;
readonly values: IValueData[];
}
export interface MarkupContent {
kind: MarkupKind;
value: string;
readonly kind: MarkupKind;
readonly value: string;
}
export declare type MarkupKind = 'plaintext' | 'markdown';

0 comments on commit d27f333

Please sign in to comment.