WIP lsp-manager effort 4
This commit is contained in:
parent
8b366ea97b
commit
fd60b42f91
@ -53,6 +53,7 @@
|
||||
"@angular/platform-browser": "19.2.0",
|
||||
"ace-builds": "1.43.0",
|
||||
"ace-diff": "3.0.3",
|
||||
"ace-layout": "1.5.0",
|
||||
"ace-linters": "1.7.0",
|
||||
"bootstrap": "5.3.6",
|
||||
"bootstrap-icons": "1.12.1",
|
||||
|
@ -30,7 +30,7 @@ export class LspManagerService {
|
||||
});
|
||||
}
|
||||
|
||||
public registerEditorToLSPClient(editor: any): void {
|
||||
public registerEditorToLSPClient(editor: any) {
|
||||
let mode = this.getMode(editor.session);
|
||||
|
||||
if ( this.languageProviders[mode] ) {
|
||||
@ -45,7 +45,7 @@ export class LspManagerService {
|
||||
return window.fs.getLspConfigData();
|
||||
}
|
||||
|
||||
private parseAndReturnLSPConfigData() {
|
||||
private parseAndReturnLSPConfigData(): {} {
|
||||
let configData = JSON.parse(
|
||||
this.lspConfigDataStr.replaceAll("{workspace.folder}", this.workspaceFolder)
|
||||
);
|
||||
@ -62,7 +62,7 @@ export class LspManagerService {
|
||||
return configData;
|
||||
}
|
||||
|
||||
private getInitializationOptions(mode: string, configData: {}) {
|
||||
private getInitializationOptions(mode: string, configData: {}): {} {
|
||||
let _initializationOptions = {};
|
||||
|
||||
if ( Object.keys(configData).length !== 0 && configData[mode] ) {
|
||||
@ -72,7 +72,7 @@ export class LspManagerService {
|
||||
return _initializationOptions;
|
||||
}
|
||||
|
||||
public createLanguageProviderWithClientServer(mode: string) {
|
||||
public createLanguageProviderWithClientServer(mode: string): LanguageProvider {
|
||||
if ( this.languageProviders[mode] ) return;
|
||||
let servers: LanguageClientConfig[] = [];
|
||||
|
||||
@ -97,10 +97,12 @@ export class LspManagerService {
|
||||
}
|
||||
|
||||
this.languageProviders[mode] = AceLanguageClient.for(servers);
|
||||
// this.languageProviders[mode].requireFilePath = true;
|
||||
this.languageProviders[mode].changeWorkspaceFolder(this.workspaceFolder);
|
||||
return this.languageProviders[mode];
|
||||
}
|
||||
|
||||
private getLanguageProviderWithWebWorker() {
|
||||
private getLanguageProviderWithWebWorker(): LanguageProvider {
|
||||
let worker = new Worker(new URL('./webworker.js', import.meta.url));
|
||||
return LanguageProvider.create(worker);
|
||||
}
|
||||
@ -112,7 +114,7 @@ export class LspManagerService {
|
||||
this.languageProviders[mode].setSessionFilePath(session, filePath);
|
||||
}
|
||||
|
||||
public getMode(session: any) {
|
||||
public getMode(session: any): string {
|
||||
return session.getMode()["$id"].replace("ace/mode/", "");
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,6 @@ export class FilesService {
|
||||
): Promise<NewtonFile | undefined | null> {
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
const file = files[i];
|
||||
// const path = window.fs.getPathForFile(file).replace("file://", "");
|
||||
const path = window.fs.getPathForFile(file);
|
||||
|
||||
if (!file || !path) continue;
|
||||
@ -90,7 +89,8 @@ export class FilesService {
|
||||
if (loadFileContents)
|
||||
data = await window.fs.getFileContents(file.path);
|
||||
|
||||
file.session = new EditSession(data);
|
||||
file.session = new EditSession(data);
|
||||
file.session["id"] = path;
|
||||
file.session.setUndoManager( new UndoManager() );
|
||||
file.session.setMode( getModeForPath( file.path ).mode );
|
||||
|
||||
|
@ -2,6 +2,10 @@ import { Component } from "@angular/core";
|
||||
|
||||
// Import Ace and its modes/themes so that `ace` global is defined
|
||||
import * as ace from "ace-builds/src-min-noconflict/ace";
|
||||
|
||||
// Note: https://github.com/mkslanc/ace-linters/blob/c286d85c558530aa1b0597d02108bc782abd4736/packages/demo/file-api-websockets/client.ts#L27
|
||||
// import { AceLayout, Box, TabManager, Button, dom, AceTreeWrapper, FileSystemWeb, Pane, AceEditor, Tab } from "ace-layout";
|
||||
|
||||
import "ace-builds/src-min-noconflict/ext-settings_menu";
|
||||
import "ace-builds/src-min-noconflict/ext-keybinding_menu";
|
||||
import "ace-builds/src-min-noconflict/ext-command_bar";
|
||||
|
@ -103,6 +103,7 @@ export class LspManagerComponent {
|
||||
this.editor.session,
|
||||
this.activeFile.path
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -124,7 +125,7 @@ export class LspManagerComponent {
|
||||
|
||||
// Note: hack for issue with setActiveEditor TODO
|
||||
setTimeout(() => {
|
||||
this.innerEditor.setSession(this.editor.session);
|
||||
this.innerEditor.setSession(this.editor.getSession());
|
||||
}, 10);
|
||||
}
|
||||
|
||||
@ -145,6 +146,7 @@ export class LspManagerComponent {
|
||||
this.editor.session,
|
||||
this.activeFile.path
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private closeFile(message: ServiceMessage) {
|
||||
|
Loading…
Reference in New Issue
Block a user