cssMode.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. import { WorkerManager } from './workerManager.js';
  6. import * as languageFeatures from './languageFeatures.js';
  7. import { languages } from './fillers/monaco-editor-core.js';
  8. export function setupMode(defaults) {
  9. var disposables = [];
  10. var providers = [];
  11. var client = new WorkerManager(defaults);
  12. disposables.push(client);
  13. var worker = function () {
  14. var uris = [];
  15. for (var _i = 0; _i < arguments.length; _i++) {
  16. uris[_i] = arguments[_i];
  17. }
  18. return client.getLanguageServiceWorker.apply(client, uris);
  19. };
  20. function registerProviders() {
  21. var languageId = defaults.languageId, modeConfiguration = defaults.modeConfiguration;
  22. disposeAll(providers);
  23. if (modeConfiguration.completionItems) {
  24. providers.push(languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
  25. }
  26. if (modeConfiguration.hovers) {
  27. providers.push(languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
  28. }
  29. if (modeConfiguration.documentHighlights) {
  30. providers.push(languages.registerDocumentHighlightProvider(languageId, new languageFeatures.DocumentHighlightAdapter(worker)));
  31. }
  32. if (modeConfiguration.definitions) {
  33. providers.push(languages.registerDefinitionProvider(languageId, new languageFeatures.DefinitionAdapter(worker)));
  34. }
  35. if (modeConfiguration.references) {
  36. providers.push(languages.registerReferenceProvider(languageId, new languageFeatures.ReferenceAdapter(worker)));
  37. }
  38. if (modeConfiguration.documentSymbols) {
  39. providers.push(languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
  40. }
  41. if (modeConfiguration.rename) {
  42. providers.push(languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker)));
  43. }
  44. if (modeConfiguration.colors) {
  45. providers.push(languages.registerColorProvider(languageId, new languageFeatures.DocumentColorAdapter(worker)));
  46. }
  47. if (modeConfiguration.foldingRanges) {
  48. providers.push(languages.registerFoldingRangeProvider(languageId, new languageFeatures.FoldingRangeAdapter(worker)));
  49. }
  50. if (modeConfiguration.diagnostics) {
  51. providers.push(new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults));
  52. }
  53. if (modeConfiguration.selectionRanges) {
  54. providers.push(languages.registerSelectionRangeProvider(languageId, new languageFeatures.SelectionRangeAdapter(worker)));
  55. }
  56. }
  57. registerProviders();
  58. disposables.push(asDisposable(providers));
  59. return asDisposable(disposables);
  60. }
  61. function asDisposable(disposables) {
  62. return { dispose: function () { return disposeAll(disposables); } };
  63. }
  64. function disposeAll(disposables) {
  65. while (disposables.length) {
  66. disposables.pop().dispose();
  67. }
  68. }