-
|
I am attempting to get the extensions worker running but when I do I loose all the information in vscode.extensions.all. My application will need this information for some other wiring it needs to do. This seems to populate when not passing the workerConfig in the code below. Is there something I am doing wrong or another way to get this information? Thanks. //vs code extensions
// these packages are included via @codingame/monaco-vscode-all-default-extensions
// see https://www.npmjs.com/package/@codingame/monaco-vscode-all-default-extensions?activeTab=dependencies
import "@codingame/monaco-vscode-csharp-default-extension"
import "@codingame/monaco-vscode-css-default-extension"
import "@codingame/monaco-vscode-css-language-features-default-extension"
import "@codingame/monaco-vscode-diff-default-extension"
import "@codingame/monaco-vscode-extension-editing-default-extension"
import "@codingame/monaco-vscode-html-default-extension"
import "@codingame/monaco-vscode-html-language-features-default-extension"
import "@codingame/monaco-vscode-json-default-extension"
import "@codingame/monaco-vscode-json-language-features-default-extension"
import "@codingame/monaco-vscode-markdown-basics-default-extension"
import "@codingame/monaco-vscode-markdown-language-features-default-extension"
import "@codingame/monaco-vscode-razor-default-extension"
import "@codingame/monaco-vscode-sql-default-extension"
import "@codingame/monaco-vscode-theme-defaults-default-extension"
import "@codingame/monaco-vscode-typescript-basics-default-extension"
import "@codingame/monaco-vscode-typescript-language-features-default-extension"
import "@codingame/monaco-vscode-xml-default-extension"
import "@codingame/monaco-vscode-yaml-default-extension"
import '@codingame/monaco-vscode-extension-api/localExtensionHost';
//use for debugging
//import "@codingame/monaco-vscode-all-default-extensions"
import * as monaco from '@codingame/monaco-vscode-editor-api';
import {initialize} from '@codingame/monaco-vscode-api';
//vs code service overrides
import getExtensionsServiceOverride, {type WorkerConfig} from '@codingame/monaco-vscode-extensions-service-override';
import getLanguagesServiceOverride from '@codingame/monaco-vscode-languages-service-override';
import getTextmateServiceOverride from '@codingame/monaco-vscode-textmate-service-override';
import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override';
import * as vscode from '@codingame/monaco-vscode-extension-api';
//workers
//monaco workers
import TextEditorWorker from '@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker?worker'
//vscode workers
import TextMateWorker from '@codingame/monaco-vscode-textmate-service-override/worker?worker'
//import extHostWorkerUrl from '@codingame/monaco-vscode-api/workers/extensionHost.worker?worker&url'
//import extensionHostWorkerUrl from './extensionHost.worker.ts'
export type WorkerLoader = () => Worker;
declare global {
interface Window {
MonacoEnvironment: {
getWorker: (moduleId: string, label: string) => Worker;
};
monaco: any;
vscode: any;
}
}
window.monaco = monaco;
window.vscode = vscode;
const workerLoaders: Partial<Record<string, WorkerLoader>> = {
TextEditorWorker: () => new TextEditorWorker(),
TextMateWorker: () => new TextMateWorker(),
}
window.MonacoEnvironment = {
getWorker: function (_moduleId, label) {
console.log('getWorker', _moduleId, label);
const workerFactory = workerLoaders[label]
if (workerFactory != null) {
return workerFactory()
}
throw new Error(`Worker ${label} not found`)
}
}
const extensionHostWorkerUrl = new URL('@codingame/monaco-vscode-api/workers/extensionHost.worker', import.meta.url).href;
let extWorkerConfig: WorkerConfig | null = {
url: extensionHostWorkerUrl,
options: {type: "module"}
};
//extWorkerConfig = null; //works if I uncomment this line but I lose worker functionality such as hover providers for html.
export const vsCodeReady = initialize({
...getLanguagesServiceOverride(),
...getTextmateServiceOverride(),
...getThemeServiceOverride(),
...getExtensionsServiceOverride(extWorkerConfig),
});
await vsCodeReady;
console.log(vscode.extensions.all); //this returns [] |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
|
To get all the extensions running in all extension hosts, you need |
Beta Was this translation helpful? Give feedback.
-
|
@CGNonofr Thank you for the reply. I tried using that property but get the following error. Is there some other configuration I am missing? Thanks. |
Beta Was this translation helpful? Give feedback.
Yes, it uses an api that is still a proposal
Only an authorized extension can use it, so you will have to use the
registerExtensionfunction to register an extension that declares that proposal in its manifest, make it use the LocalProcess extension host and put it insystemmode (in the third parameter)Then on the result, you can call
setAsDefaultApion it, THEN you'll be able to usevscode.extensions.allAcrossExtensionHosts