Various LSP or LSP tangental changes

This commit is contained in:
2025-08-09 15:57:07 -05:00
parent 2ede33f3c2
commit df5f2d481a
4 changed files with 155 additions and 60 deletions

View File

@@ -13,59 +13,73 @@
"alt-socket": "ws://127.0.0.1:9999/?name=java-language-server", "alt-socket": "ws://127.0.0.1:9999/?name=java-language-server",
"initialization-options": { "initialization-options": {
"bundles": [ "bundles": [
"intellicode-core.jar"
], ],
"workspaceFolders": [ "workspaceFolders": [
"file://{workspace.folder}" "file://{workspace.folder}"
], ],
"extendedClientCapabilities": { "extendedClientCapabilities": {
"classFileContentsSupport": true, "classFileContentsSupport": true,
"executeClientCommandSupport": true "executeClientCommandSupport": false
}, },
"settings": { "settings": {
"java": { "java": {
"home": "/usr/lib/jvm/java-17-openjdk",
"autobuild": { "autobuild": {
"enabled": false "enabled": true
}, },
"completion": { "jdt": {
"enabled": true, "ls": {
"importOrder": [ "javac": {
"java", "enabled": true
"javax", },
"org", "java": {
"com" "home": "{user.home}/Portable_Apps/sdks/javasdk/jdk-22.0.2"
] },
"lombokSupport": {
"enabled": true
},
"protobufSupport":{
"enabled": true
},
"androidSupport": {
"enabled": true
}
}
}, },
"configuration": { "configuration": {
"updateBuildConfiguration": "automatic", "updateBuildConfiguration": "automatic",
"maven": { "maven": {
"userSettings": "{user.home}/.config/jdtls/settings.xml", "userSettings": "{user.home}/.config/lsps/jdtls/settings.xml",
"globalSettings": "{user.home}/.config/jdtls/settings.xml" "globalSettings": "{user.home}/.config/lsps/jdtls/settings.xml"
}, },
"runtimes": [ "runtimes": [
{ {
"name": "JavaJDK-17", "name": "JavaSE-17",
"path": "/usr/lib/jvm/java-17-openjdk", "path": "/usr/lib/jvm/java-17-openjdk",
"javadoc": "https://docs.oracle.com/en/java/javase/17/docs/api/", "javadoc": "https://docs.oracle.com/en/java/javase/17/docs/api/",
"default": false
},
{
"name": "JavaSE-22",
"path": "{user.home}/Portable_Apps/sdks/javasdk/jdk-22.0.2",
"javadoc": "https://docs.oracle.com/en/java/javase/22/docs/api/",
"default": true "default": true
} }
] ]
}, },
"classPath": [ "classPath": [
"{user.home}/.config/jdtls/m2/repository/**/*-sources.jar", "{user.home}/.config/lsps/jdtls/m2/repository/**/*-sources.jar",
"lib/**/*-sources.jar" "lib/**/*-sources.jar"
], ],
"docPath": [ "docPath": [
"{user.home}/.config/jdtls/m2/repository/**/*-javadoc.jar", "{user.home}/.config/lsps/jdtls/m2/repository/**/*-javadoc.jar",
"lib/**/*-javadoc.jar" "lib/**/*-javadoc.jar"
], ],
"project": { "project": {
"encoding": "ignore", "encoding": "ignore",
"outputPath": "bin", "outputPath": "bin",
"referencedLibraries": [ "referencedLibraries": [
"lib/**/*.jar", "{user.home}/.config/lsps/jdtls/m2/repository/**/*.jar",
"{user.home}/.config/jdtls/m2/repository/**/*.jar" "lib/**/*.jar"
], ],
"importOnFirstTimeStartup": "automatic", "importOnFirstTimeStartup": "automatic",
"importHint": true, "importHint": true,
@@ -75,7 +89,7 @@
], ],
"sourcePaths": [ "sourcePaths": [
"src", "src",
"{user.home}/.config/jdtls/m2/repository/**/*.jar" "{user.home}/.config/lsps/jdtls/m2/repository/**/*.jar"
] ]
}, },
"sources": { "sources": {
@@ -105,9 +119,9 @@
"enabled": true "enabled": true
}, },
"version": "", "version": "",
"home": "abs(static/gradle-7.3.3)", "home": "{user.home}/Portable_Apps/sdks/gradle/gradle-9.0.0",
"java": { "java": {
"home": "abs(static/launch_jres/17.0.6-linux-x86_64)" "home": "{user.home}/Portable_Apps/sdks/javasdk/jdk-22.0.2"
}, },
"offline": { "offline": {
"enabled": false "enabled": false
@@ -133,13 +147,54 @@
"downloadSources": true, "downloadSources": true,
"updateSnapshots": true "updateSnapshots": true
}, },
"silentNotification": false, "silentNotification": true,
"contentProvider": {
"preferred": "fernflower"
},
"signatureHelp": { "signatureHelp": {
"enabled": true, "enabled": true,
"description": { "description": {
"enabled": true "enabled": true
} }
}, },
"completion": {
"enabled": true,
"matchCase": "firstletter",
"maxResults": 25,
"guessMethodArguments": true,
"lazyResolveTextEdit": {
"enabled": true
},
"postfix": {
"enabled": true
},
"favoriteStaticMembers": [
"org.junit.Assert.*",
"org.junit.Assume.*",
"org.junit.jupiter.api.Assertions.*",
"org.junit.jupiter.api.Assumptions.*",
"org.junit.jupiter.api.DynamicContainer.*",
"org.junit.jupiter.api.DynamicTest.*"
],
"importOrder": [
"#",
"java",
"javax",
"org",
"com"
]
},
"references": {
"includeAccessors": true,
"includeDecompiledSources": true
},
"codeGeneration": {
"toString": {
"template": "${object.className}{${member.name()}=${member.value}, ${otherMembers}}"
},
"insertionLocation": "afterCursor",
"useBlocks": true
},
"implementationsCodeLens": { "implementationsCodeLens": {
"enabled": true "enabled": true
}, },
@@ -165,51 +220,36 @@
"socket": "ws://127.0.0.1:9999/python", "socket": "ws://127.0.0.1:9999/python",
"socket-two": "ws://127.0.0.1:9999/?name=pylsp", "socket-two": "ws://127.0.0.1:9999/?name=pylsp",
"initialization-options": { "initialization-options": {
"pyls": {
"plugins": {
"pycodestyle": {
"enabled": false
},
"pydocstyle": {
"enabled": false
},
"pyflakes": {
"enabled": false
},
"pylint": {
"enabled": false
},
"mccabe": {
"enabled": false
}
}
},
"pylsp": { "pylsp": {
"plugins": { "rope": {
"pycodestyle": { "ropeFolder": "{user.home}/.config/lsps/ropeproject"
"enabled": false
}, },
"pydocstyle": { "plugins": {
"ruff": {
"enabled": true,
"extendSelect": ["I"],
"lineLength": 80
},
"pycodestyle": {
"enabled": false "enabled": false
}, },
"pyflakes": { "pyflakes": {
"enabled": false "enabled": false
}, },
"pylint": { "pylint": {
"enabled": false "enabled": true
}, },
"mccabe": { "mccabe": {
"enabled": false "enabled": false
}, },
"ruff": true,
"pylsp_rope": { "pylsp_rope": {
"rename": true "rename": false
}, },
"rope_rename": { "rope_rename": {
"enabled": true "enabled": false
}, },
"rope_autoimport": { "rope_autoimport": {
"enabled": true "enabled": false
}, },
"rope_completion": { "rope_completion": {
"enabled": false, "enabled": false,
@@ -259,7 +299,13 @@
], ],
"environmentPath": "{user.home}/Portable_Apps/py-venvs/gtk-apps-venv/venv/bin/python", "environmentPath": "{user.home}/Portable_Apps/py-venvs/gtk-apps-venv/venv/bin/python",
"symbols": { "symbols": {
"ignoreFolders": [".nox", ".tox", ".venv", "__pycache__", "venv"], "ignoreFolders": [
".nox",
".tox",
".venv",
"__pycache__",
"venv"
],
"maxSymbols": 20 "maxSymbols": 20
} }
} }

View File

@@ -1,9 +1,15 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { ReplaySubject, Observable } from 'rxjs'; import { ReplaySubject, Observable } from 'rxjs';
import { CompletionProvider } from "ace-builds/src-min-noconflict/ace";
import { CommandBarTooltip } from "ace-builds/src-min-noconflict/ext-command_bar";
import { InlineAutocomplete } from "ace-builds/src-min-noconflict/ext-inline_autocomplete";
import { AceLanguageClient, LanguageClientConfig } from 'ace-linters/build/ace-language-client'; import { AceLanguageClient, LanguageClientConfig } from 'ace-linters/build/ace-language-client';
import { LanguageProvider } from "ace-linters"; import { LanguageProvider } from "ace-linters";
import { ServiceMessage } from '../../../types/service-message.type'; import { ServiceMessage } from '../../../types/service-message.type';
@@ -61,13 +67,13 @@ export class LspManagerService {
} }
private getInitializationOptions(mode: string, configData: {}): {} { private getInitializationOptions(mode: string, configData: {}): {} {
let _initializationOptions = {}; let initializationOptions = {};
if ( Object.keys(configData).length !== 0 && configData[mode] ) { if ( Object.keys(configData).length !== 0 && configData[mode] ) {
_initializationOptions = configData[mode]["initialization-options"]; initializationOptions = configData[mode]["initialization-options"];
} }
return _initializationOptions; return initializationOptions;
} }
public createLanguageProviderWithClientServer(mode: string): LanguageProvider { public createLanguageProviderWithClientServer(mode: string): LanguageProvider {
@@ -75,15 +81,15 @@ export class LspManagerService {
let servers: LanguageClientConfig[] = []; let servers: LanguageClientConfig[] = [];
try { try {
let configData = this.parseAndReturnLSPConfigData(); let lspConfigData = this.parseAndReturnLSPConfigData();
let _initializationOptions = this.getInitializationOptions(mode, configData); let initializationOptions = this.getInitializationOptions(mode, lspConfigData);
servers = [ servers = [
{ {
module: () => import("ace-linters/build/language-client"), module: () => import("ace-linters/build/language-client"),
modes: mode, modes: mode,
type: "socket", type: "socket",
socket: new WebSocket( configData[mode]["socket"] ), socket: new WebSocket( lspConfigData[mode]["socket"] ),
initializationOptions: _initializationOptions initializationOptions: initializationOptions
} }
]; ];
} catch(error) { } catch(error) {
@@ -97,14 +103,51 @@ export class LspManagerService {
this.languageProviders[mode] = AceLanguageClient.for( this.languageProviders[mode] = AceLanguageClient.for(
servers, servers,
{ {
workspacePath: this.workspaceFolder,
functionality: {
hover: true,
completion: {
overwriteCompleters: true,
lspCompleterOptions: {
triggerCharacters: {
add: [
" ",
".",
"@"
]
}
}
},
// inlineCompletion: {
// overwriteCompleters: true
// },
completionResolve: true,
format: true,
documentHighlights: true,
signatureHelp: true,
semanticTokens: true,
codeActions: true
},
// aceComponents: {
// InlineAutocomplete,
// CommandBarTooltip,
// CompletionProvider
// },
manualSessionControl: true manualSessionControl: true
} }
); );
this.languageProviders[mode].changeWorkspaceFolder(this.workspaceFolder);
return this.languageProviders[mode]; return this.languageProviders[mode];
} }
public closeLanguageProviderWithClientServer(mode: string): LanguageProvider {
if ( !this.languageProviders[mode] ) return;
let connection = this.languageProviders[mode];
delete this.languageProviders[mode];
connection.closeConnection();
}
private getLanguageProviderWithWebWorker(): LanguageProvider { private getLanguageProviderWithWebWorker(): LanguageProvider {
let worker = new Worker(new URL('./webworker.js', import.meta.url)); let worker = new Worker(new URL('./webworker.js', import.meta.url));
return LanguageProvider.create(worker); return LanguageProvider.create(worker);

View File

@@ -37,6 +37,7 @@
<div class="row mt-2 md-2"> <div class="row mt-2 md-2">
<div class="col col-sm" [hidden]="!lspManagerService.workspaceFolder"> <div class="col col-sm" [hidden]="!lspManagerService.workspaceFolder">
<button class="btn btn-sm btn-dark" (click)="createLanguageClient()">Create Language Client</button> <button class="btn btn-sm btn-dark" (click)="createLanguageClient()">Create Language Client</button>
<button class="btn btn-sm btn-dark" (click)="closeLanguageClient()">Close Language Client</button>
</div> </div>
<div class="col"> <div class="col">

View File

@@ -99,6 +99,11 @@ export class LspManagerComponent {
this.lspManagerService.createLanguageProviderWithClientServer(mode); this.lspManagerService.createLanguageProviderWithClientServer(mode);
} }
public closeLanguageClient() {
let mode = this.lspManagerService.getMode(this.editor.session);
this.lspManagerService.closeLanguageProviderWithClientServer(mode);
}
public registerEditorToLanguageClient() { public registerEditorToLanguageClient() {
this.lspManagerService.registerEditorToLSPClient(this.editor); this.lspManagerService.registerEditorToLSPClient(this.editor);
} }