106 lines
2.9 KiB
JavaScript
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}
|
|
};
|