mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-06-20 23:11:05 +00:00
Merge pull request #113 from remcohaszing/constant-language-id
Extract languageId into constants
This commit is contained in:
commit
9987fbc7d5
6 changed files with 14 additions and 21 deletions
1
src/constants.ts
Normal file
1
src/constants.ts
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
export const languageId = 'yaml';
|
||||||
|
|
@ -11,6 +11,7 @@ import {
|
||||||
import * as ls from 'vscode-languageserver-types';
|
import * as ls from 'vscode-languageserver-types';
|
||||||
import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||||
|
|
||||||
|
import { languageId } from './constants';
|
||||||
import { YAMLWorker } from './yamlWorker';
|
import { YAMLWorker } from './yamlWorker';
|
||||||
|
|
||||||
export type WorkerAccessor = (...more: Uri[]) => PromiseLike<YAMLWorker>;
|
export type WorkerAccessor = (...more: Uri[]) => PromiseLike<YAMLWorker>;
|
||||||
|
|
@ -46,7 +47,6 @@ function toDiagnostics(diag: ls.Diagnostic): editor.IMarkerData {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createDiagnosticsAdapter(
|
export function createDiagnosticsAdapter(
|
||||||
languageId: string,
|
|
||||||
getWorker: WorkerAccessor,
|
getWorker: WorkerAccessor,
|
||||||
defaults: languages.yaml.LanguageServiceDefaults,
|
defaults: languages.yaml.LanguageServiceDefaults,
|
||||||
): void {
|
): void {
|
||||||
|
|
@ -57,7 +57,7 @@ export function createDiagnosticsAdapter(
|
||||||
worker.resetSchema(String(resource));
|
worker.resetSchema(String(resource));
|
||||||
};
|
};
|
||||||
|
|
||||||
const doValidate = async (resource: Uri, languageId: string): Promise<void> => {
|
const doValidate = async (resource: Uri): Promise<void> => {
|
||||||
const worker = await getWorker(resource);
|
const worker = await getWorker(resource);
|
||||||
const diagnostics = await worker.doValidation(String(resource));
|
const diagnostics = await worker.doValidation(String(resource));
|
||||||
const markers = diagnostics.map(toDiagnostics);
|
const markers = diagnostics.map(toDiagnostics);
|
||||||
|
|
@ -70,8 +70,7 @@ export function createDiagnosticsAdapter(
|
||||||
};
|
};
|
||||||
|
|
||||||
const onModelAdd = (model: editor.IModel): void => {
|
const onModelAdd = (model: editor.IModel): void => {
|
||||||
const modeId = model.getModeId();
|
if (model.getModeId() !== languageId) {
|
||||||
if (modeId !== languageId) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,11 +79,11 @@ export function createDiagnosticsAdapter(
|
||||||
String(model.uri),
|
String(model.uri),
|
||||||
model.onDidChangeContent(() => {
|
model.onDidChangeContent(() => {
|
||||||
clearTimeout(handle);
|
clearTimeout(handle);
|
||||||
handle = setTimeout(() => doValidate(model.uri, modeId), 500);
|
handle = setTimeout(() => doValidate(model.uri), 500);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
doValidate(model.uri, modeId);
|
doValidate(model.uri);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onModelRemoved = (model: editor.IModel): void => {
|
const onModelRemoved = (model: editor.IModel): void => {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||||
|
|
||||||
|
import { languageId } from './constants';
|
||||||
import { setupMode } from './yamlMode';
|
import { setupMode } from './yamlMode';
|
||||||
|
|
||||||
// --- YAML configuration and defaults ---------
|
// --- YAML configuration and defaults ---------
|
||||||
|
|
||||||
export function createLanguageServiceDefaults(
|
export function createLanguageServiceDefaults(
|
||||||
languageId: string,
|
|
||||||
initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions,
|
initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions,
|
||||||
): languages.yaml.LanguageServiceDefaults {
|
): languages.yaml.LanguageServiceDefaults {
|
||||||
const onDidChange = new Emitter<languages.yaml.LanguageServiceDefaults>();
|
const onDidChange = new Emitter<languages.yaml.LanguageServiceDefaults>();
|
||||||
|
|
@ -39,7 +39,7 @@ const diagnosticDefault: languages.yaml.DiagnosticsOptions = {
|
||||||
enableSchemaRequest: false,
|
enableSchemaRequest: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const yamlDefaults = createLanguageServiceDefaults('yaml', diagnosticDefault);
|
const yamlDefaults = createLanguageServiceDefaults(diagnosticDefault);
|
||||||
|
|
||||||
// Export API
|
// Export API
|
||||||
function createAPI(): typeof languages.yaml {
|
function createAPI(): typeof languages.yaml {
|
||||||
|
|
@ -52,7 +52,7 @@ languages.yaml = createAPI();
|
||||||
// --- Registration to monaco editor ---
|
// --- Registration to monaco editor ---
|
||||||
|
|
||||||
languages.register({
|
languages.register({
|
||||||
id: 'yaml',
|
id: languageId,
|
||||||
extensions: ['.yaml', '.yml'],
|
extensions: ['.yaml', '.yml'],
|
||||||
aliases: ['YAML', 'yaml', 'YML', 'yml'],
|
aliases: ['YAML', 'yaml', 'YML', 'yml'],
|
||||||
mimetypes: ['application/x-yaml'],
|
mimetypes: ['application/x-yaml'],
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@ export function createWorkerManager(
|
||||||
// Passed in to the create() method
|
// Passed in to the create() method
|
||||||
createData: {
|
createData: {
|
||||||
languageSettings: defaults.diagnosticsOptions,
|
languageSettings: defaults.diagnosticsOptions,
|
||||||
languageId: defaults.languageId,
|
|
||||||
enableSchemaRequest: defaults.diagnosticsOptions.enableSchemaRequest,
|
enableSchemaRequest: defaults.diagnosticsOptions.enableSchemaRequest,
|
||||||
prefix: defaults.diagnosticsOptions.prefix,
|
prefix: defaults.diagnosticsOptions.prefix,
|
||||||
isKubernetes: defaults.diagnosticsOptions.isKubernetes,
|
isKubernetes: defaults.diagnosticsOptions.isKubernetes,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
import { languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||||
|
|
||||||
|
import { languageId } from './constants';
|
||||||
import {
|
import {
|
||||||
createCompletionItemProvider,
|
createCompletionItemProvider,
|
||||||
createDiagnosticsAdapter,
|
createDiagnosticsAdapter,
|
||||||
|
|
@ -45,8 +46,6 @@ const richEditConfiguration: languages.LanguageConfiguration = {
|
||||||
export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): void {
|
export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): void {
|
||||||
const worker = createWorkerManager(defaults);
|
const worker = createWorkerManager(defaults);
|
||||||
|
|
||||||
const { languageId } = defaults;
|
|
||||||
|
|
||||||
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker));
|
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker));
|
||||||
languages.registerHoverProvider(languageId, createHoverProvider(worker));
|
languages.registerHoverProvider(languageId, createHoverProvider(worker));
|
||||||
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker));
|
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker));
|
||||||
|
|
@ -55,6 +54,6 @@ export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): voi
|
||||||
createDocumentFormattingEditProvider(worker),
|
createDocumentFormattingEditProvider(worker),
|
||||||
);
|
);
|
||||||
languages.registerLinkProvider(languageId, createLinkProvider(worker));
|
languages.registerLinkProvider(languageId, createLinkProvider(worker));
|
||||||
createDiagnosticsAdapter(languageId, worker, defaults);
|
createDiagnosticsAdapter(worker, defaults);
|
||||||
languages.setLanguageConfiguration(languageId, richEditConfiguration);
|
languages.setLanguageConfiguration(languageId, richEditConfiguration);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ import {
|
||||||
LanguageSettings,
|
LanguageSettings,
|
||||||
} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||||
|
|
||||||
|
import { languageId } from './constants';
|
||||||
|
|
||||||
let defaultSchemaRequestService: (url: string) => Promise<string>;
|
let defaultSchemaRequestService: (url: string) => Promise<string>;
|
||||||
|
|
||||||
if (typeof fetch !== 'undefined') {
|
if (typeof fetch !== 'undefined') {
|
||||||
|
|
@ -32,13 +34,7 @@ export interface YAMLWorker {
|
||||||
|
|
||||||
export function createYAMLWorker(
|
export function createYAMLWorker(
|
||||||
ctx: worker.IWorkerContext,
|
ctx: worker.IWorkerContext,
|
||||||
{
|
{ enableSchemaRequest, isKubernetes = false, languageSettings, prefix = '' }: ICreateData,
|
||||||
enableSchemaRequest,
|
|
||||||
isKubernetes = false,
|
|
||||||
languageId,
|
|
||||||
languageSettings,
|
|
||||||
prefix = '',
|
|
||||||
}: ICreateData,
|
|
||||||
): YAMLWorker {
|
): YAMLWorker {
|
||||||
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
||||||
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
||||||
|
|
@ -99,7 +95,6 @@ export function createYAMLWorker(
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ICreateData {
|
export interface ICreateData {
|
||||||
languageId: string;
|
|
||||||
languageSettings: LanguageSettings;
|
languageSettings: LanguageSettings;
|
||||||
enableSchemaRequest: boolean;
|
enableSchemaRequest: boolean;
|
||||||
prefix?: string;
|
prefix?: string;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue