PortaleOrdiniGruppo/PortalStudio/monaco/monacoConfig.js
2025-03-24 15:28:26 +01:00

106 lines
2.9 KiB
JavaScript

import { getKeybindingsServiceOverride } from "./monacoPack.js";
/**
* Create the configuration required to start the monaco editor
* @param {Object} parameters: contains all the information required to start the monaco editor (e.g. language, language server, editor options)
* @returns {Object} configurations object
*/
export const createUserConfig = (parameters) => {
let language = parameters.language;
let startLangServer = parameters.startLangServer;
let languagesSetup = [];
switch(language){
case "expBuilder":
case "javascript":
languagesSetup.push({
id: "javascript",
extensions: [".js"],
aliases: ["JavaScript"],
mimetypes: ["application/javascript"],
});
break;
}
let wrapperConfig = {
serviceConfig: {
userServices: {
...getKeybindingsServiceOverride(),
},
debugLogging: true,
},
editorAppConfig: {
$type: "extended",
languageId: language,
codeUri: (language == "javascript" ? "/workspace/js_file.js" : "/workspace/default_file.py"),
editorOptions: parameters.editorOptions,
extensions: [
{
config: {
name: language + "-client",
publisher: "monaco-languageclient-project",
version: "1.0.0",
engines: {
vscode: "^1.85.0",
},
contributes: {
languages: languagesSetup,
},
},
},
],
userConfiguration: {
json: JSON.stringify({
"workbench.colorTheme": "Default Light Modern",
}),
},
useDiffEditor: false
},
};
if(startLangServer){
lcConfig = {
options: {
name: "JS Editor",
$type: "WebSocket",
host: "localhost",
port: 8080,
path: "test_jsonrpc/websocket/jsright",
// extraParams: {
// authorization: 'UserAuth'
// },
secured: false,
startOptions: {
onCall: (languageClient) => {
// setTimeout(() => {
// ["jsright.restartserver", "jsright.organizeimports"].forEach(
// (cmdName) => {
// vscode.commands.registerCommand(cmdName, (...args) => {
// languageClient?.sendRequest("workspace/executeCommand", {
// command: cmdName,
// arguments: args,
// });
// });
// }
// );
// }, 250);
},
reportStatus: true,
},
},
clientOptions: {
documentSelector: ["javascript"],
workspaceFolder: {
index: 0,
name: "workspace",
uri: vscode.Uri.parse("/workspace/"),
},
},
};
return {languageClientConfig: lcConfig, wrapperConfig: wrapperConfig};
}
return {wrapperConfig: wrapperConfig}
};