mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-06-18 14:01:07 +00:00
TypeScript is better at inferring types when using simple functions and objects instead of classes. As a result many type annotations have now been removed without impacting type safety. Some other benefits are this can be minified better and private fields are now truly private variables.
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { IDisposable, languages, Uri } from 'monaco-editor/esm/vs/editor/editor.api';
|
|
|
|
import {
|
|
createCompletionItemProvider,
|
|
createDiagnosticsAdapter,
|
|
createDocumentFormattingEditProvider,
|
|
createDocumentSymbolProvider,
|
|
createHoverProvider,
|
|
WorkerAccessor,
|
|
} from './languageFeatures';
|
|
import { createWorkerManager } from './workerManager';
|
|
import { YAMLWorker } from './yamlWorker';
|
|
|
|
const richEditConfiguration: languages.LanguageConfiguration = {
|
|
comments: {
|
|
lineComment: '#',
|
|
},
|
|
brackets: [
|
|
['{', '}'],
|
|
['[', ']'],
|
|
['(', ')'],
|
|
],
|
|
autoClosingPairs: [
|
|
{ open: '{', close: '}' },
|
|
{ open: '[', close: ']' },
|
|
{ open: '(', close: ')' },
|
|
{ open: '"', close: '"' },
|
|
{ open: "'", close: "'" },
|
|
],
|
|
surroundingPairs: [
|
|
{ open: '{', close: '}' },
|
|
{ open: '[', close: ']' },
|
|
{ open: '(', close: ')' },
|
|
{ open: '"', close: '"' },
|
|
{ open: "'", close: "'" },
|
|
],
|
|
|
|
onEnterRules: [
|
|
{
|
|
beforeText: /:\s*$/,
|
|
action: { indentAction: languages.IndentAction.Indent },
|
|
},
|
|
],
|
|
};
|
|
|
|
export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): void {
|
|
const disposables: IDisposable[] = [];
|
|
|
|
const client = createWorkerManager(defaults);
|
|
disposables.push(client);
|
|
|
|
const worker: WorkerAccessor = (...uris: Uri[]): Promise<YAMLWorker> =>
|
|
client.getLanguageServiceWorker(...uris);
|
|
|
|
const { languageId } = defaults;
|
|
|
|
disposables.push(
|
|
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker)),
|
|
languages.registerHoverProvider(languageId, createHoverProvider(worker)),
|
|
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker)),
|
|
languages.registerDocumentFormattingEditProvider(
|
|
languageId,
|
|
createDocumentFormattingEditProvider(worker),
|
|
),
|
|
createDiagnosticsAdapter(languageId, worker, defaults),
|
|
languages.setLanguageConfiguration(languageId, richEditConfiguration),
|
|
);
|
|
}
|