diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..57de7a0 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1 @@ +export const languageId = 'yaml'; diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 349ae49..48f667c 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -11,6 +11,7 @@ import { import * as ls from 'vscode-languageserver-types'; import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService'; +import { languageId } from './constants'; import { YAMLWorker } from './yamlWorker'; export type WorkerAccessor = (...more: Uri[]) => PromiseLike; @@ -46,7 +47,6 @@ function toDiagnostics(diag: ls.Diagnostic): editor.IMarkerData { } export function createDiagnosticsAdapter( - languageId: string, getWorker: WorkerAccessor, defaults: languages.yaml.LanguageServiceDefaults, ): void { @@ -57,7 +57,7 @@ export function createDiagnosticsAdapter( worker.resetSchema(String(resource)); }; - const doValidate = async (resource: Uri, languageId: string): Promise => { + const doValidate = async (resource: Uri): Promise => { const worker = await getWorker(resource); const diagnostics = await worker.doValidation(String(resource)); const markers = diagnostics.map(toDiagnostics); @@ -70,8 +70,7 @@ export function createDiagnosticsAdapter( }; const onModelAdd = (model: editor.IModel): void => { - const modeId = model.getModeId(); - if (modeId !== languageId) { + if (model.getModeId() !== languageId) { return; } @@ -80,11 +79,11 @@ export function createDiagnosticsAdapter( String(model.uri), model.onDidChangeContent(() => { 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 => { diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index be91e1b..4d90f82 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -1,11 +1,11 @@ import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api'; +import { languageId } from './constants'; import { setupMode } from './yamlMode'; // --- YAML configuration and defaults --------- export function createLanguageServiceDefaults( - languageId: string, initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions, ): languages.yaml.LanguageServiceDefaults { const onDidChange = new Emitter(); @@ -39,7 +39,7 @@ const diagnosticDefault: languages.yaml.DiagnosticsOptions = { enableSchemaRequest: false, }; -const yamlDefaults = createLanguageServiceDefaults('yaml', diagnosticDefault); +const yamlDefaults = createLanguageServiceDefaults(diagnosticDefault); // Export API function createAPI(): typeof languages.yaml { @@ -52,7 +52,7 @@ languages.yaml = createAPI(); // --- Registration to monaco editor --- languages.register({ - id: 'yaml', + id: languageId, extensions: ['.yaml', '.yml'], aliases: ['YAML', 'yaml', 'YML', 'yml'], mimetypes: ['application/x-yaml'], diff --git a/src/workerManager.ts b/src/workerManager.ts index 3fd360f..998d202 100644 --- a/src/workerManager.ts +++ b/src/workerManager.ts @@ -47,7 +47,6 @@ export function createWorkerManager( // Passed in to the create() method createData: { languageSettings: defaults.diagnosticsOptions, - languageId: defaults.languageId, enableSchemaRequest: defaults.diagnosticsOptions.enableSchemaRequest, prefix: defaults.diagnosticsOptions.prefix, isKubernetes: defaults.diagnosticsOptions.isKubernetes, diff --git a/src/yamlMode.ts b/src/yamlMode.ts index 76ca51f..8f7817a 100644 --- a/src/yamlMode.ts +++ b/src/yamlMode.ts @@ -1,5 +1,6 @@ import { languages } from 'monaco-editor/esm/vs/editor/editor.api'; +import { languageId } from './constants'; import { createCompletionItemProvider, createDiagnosticsAdapter, @@ -45,8 +46,6 @@ const richEditConfiguration: languages.LanguageConfiguration = { export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): void { const worker = createWorkerManager(defaults); - const { languageId } = defaults; - languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker)); languages.registerHoverProvider(languageId, createHoverProvider(worker)); languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker)); @@ -55,6 +54,6 @@ export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): voi createDocumentFormattingEditProvider(worker), ); languages.registerLinkProvider(languageId, createLinkProvider(worker)); - createDiagnosticsAdapter(languageId, worker, defaults); + createDiagnosticsAdapter(worker, defaults); languages.setLanguageConfiguration(languageId, richEditConfiguration); } diff --git a/src/yamlWorker.ts b/src/yamlWorker.ts index 623ef07..bfe73e4 100644 --- a/src/yamlWorker.ts +++ b/src/yamlWorker.ts @@ -8,6 +8,8 @@ import { LanguageSettings, } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService'; +import { languageId } from './constants'; + let defaultSchemaRequestService: (url: string) => Promise; if (typeof fetch !== 'undefined') { @@ -32,13 +34,7 @@ export interface YAMLWorker { export function createYAMLWorker( ctx: worker.IWorkerContext, - { - enableSchemaRequest, - isKubernetes = false, - languageId, - languageSettings, - prefix = '', - }: ICreateData, + { enableSchemaRequest, isKubernetes = false, languageSettings, prefix = '' }: ICreateData, ): YAMLWorker { const service = (url: string): Promise => defaultSchemaRequestService(`${prefix}${url}`); const languageService = getLanguageService(enableSchemaRequest && service, null, null, null); @@ -99,7 +95,6 @@ export function createYAMLWorker( } export interface ICreateData { - languageId: string; languageSettings: LanguageSettings; enableSchemaRequest: boolean; prefix?: string;