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",
"initialization-options": {
"bundles": [
"intellicode-core.jar"
],
"workspaceFolders": [
"file://{workspace.folder}"
],
"extendedClientCapabilities": {
"classFileContentsSupport": true,
"executeClientCommandSupport": true
"executeClientCommandSupport": false
},
"settings": {
"java": {
"home": "/usr/lib/jvm/java-17-openjdk",
"autobuild": {
"enabled": false
"enabled": true
},
"completion": {
"enabled": true,
"importOrder": [
"java",
"javax",
"org",
"com"
]
"jdt": {
"ls": {
"javac": {
"enabled": true
},
"java": {
"home": "{user.home}/Portable_Apps/sdks/javasdk/jdk-22.0.2"
},
"lombokSupport": {
"enabled": true
},
"protobufSupport":{
"enabled": true
},
"androidSupport": {
"enabled": true
}
}
},
"configuration": {
"updateBuildConfiguration": "automatic",
"maven": {
"userSettings": "{user.home}/.config/jdtls/settings.xml",
"globalSettings": "{user.home}/.config/jdtls/settings.xml"
"userSettings": "{user.home}/.config/lsps/jdtls/settings.xml",
"globalSettings": "{user.home}/.config/lsps/jdtls/settings.xml"
},
"runtimes": [
{
"name": "JavaJDK-17",
"name": "JavaSE-17",
"path": "/usr/lib/jvm/java-17-openjdk",
"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
}
]
},
"classPath": [
"{user.home}/.config/jdtls/m2/repository/**/*-sources.jar",
"{user.home}/.config/lsps/jdtls/m2/repository/**/*-sources.jar",
"lib/**/*-sources.jar"
],
"docPath": [
"{user.home}/.config/jdtls/m2/repository/**/*-javadoc.jar",
"{user.home}/.config/lsps/jdtls/m2/repository/**/*-javadoc.jar",
"lib/**/*-javadoc.jar"
],
"project": {
"encoding": "ignore",
"outputPath": "bin",
"referencedLibraries": [
"lib/**/*.jar",
"{user.home}/.config/jdtls/m2/repository/**/*.jar"
"{user.home}/.config/lsps/jdtls/m2/repository/**/*.jar",
"lib/**/*.jar"
],
"importOnFirstTimeStartup": "automatic",
"importHint": true,
@@ -75,7 +89,7 @@
],
"sourcePaths": [
"src",
"{user.home}/.config/jdtls/m2/repository/**/*.jar"
"{user.home}/.config/lsps/jdtls/m2/repository/**/*.jar"
]
},
"sources": {
@@ -105,9 +119,9 @@
"enabled": true
},
"version": "",
"home": "abs(static/gradle-7.3.3)",
"home": "{user.home}/Portable_Apps/sdks/gradle/gradle-9.0.0",
"java": {
"home": "abs(static/launch_jres/17.0.6-linux-x86_64)"
"home": "{user.home}/Portable_Apps/sdks/javasdk/jdk-22.0.2"
},
"offline": {
"enabled": false
@@ -133,13 +147,54 @@
"downloadSources": true,
"updateSnapshots": true
},
"silentNotification": false,
"silentNotification": true,
"contentProvider": {
"preferred": "fernflower"
},
"signatureHelp": {
"enabled": true,
"description": {
"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": {
"enabled": true
},
@@ -165,51 +220,36 @@
"socket": "ws://127.0.0.1:9999/python",
"socket-two": "ws://127.0.0.1:9999/?name=pylsp",
"initialization-options": {
"pyls": {
"plugins": {
"pycodestyle": {
"enabled": false
},
"pydocstyle": {
"enabled": false
},
"pyflakes": {
"enabled": false
},
"pylint": {
"enabled": false
},
"mccabe": {
"enabled": false
}
}
},
"pylsp": {
"rope": {
"ropeFolder": "{user.home}/.config/lsps/ropeproject"
},
"plugins": {
"pycodestyle": {
"enabled": false
"ruff": {
"enabled": true,
"extendSelect": ["I"],
"lineLength": 80
},
"pydocstyle": {
"pycodestyle": {
"enabled": false
},
"pyflakes": {
"enabled": false
},
"pylint": {
"enabled": false
"enabled": true
},
"mccabe": {
"enabled": false
},
"ruff": true,
"pylsp_rope": {
"rename": true
"rename": false
},
"rope_rename": {
"enabled": true
"enabled": false
},
"rope_autoimport": {
"enabled": true
"enabled": false
},
"rope_completion": {
"enabled": false,
@@ -224,7 +264,7 @@
"include_function_objects": true,
"fuzzy": false
},
"jedi":{
"jedi": {
"root_dir": "file://{workspace.folder}",
"extra_paths": [
"{user.home}/Portable_Apps/py-venvs/pylsp-venv/venv/lib/python3.10/site-packages"
@@ -259,7 +299,13 @@
],
"environmentPath": "{user.home}/Portable_Apps/py-venvs/gtk-apps-venv/venv/bin/python",
"symbols": {
"ignoreFolders": [".nox", ".tox", ".venv", "__pycache__", "venv"],
"ignoreFolders": [
".nox",
".tox",
".venv",
"__pycache__",
"venv"
],
"maxSymbols": 20
}
}

View File

@@ -1,9 +1,15 @@
import { Injectable } from '@angular/core';
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 { LanguageProvider } from "ace-linters";
import { ServiceMessage } from '../../../types/service-message.type';
@@ -61,13 +67,13 @@ export class LspManagerService {
}
private getInitializationOptions(mode: string, configData: {}): {} {
let _initializationOptions = {};
let initializationOptions = {};
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 {
@@ -75,15 +81,15 @@ export class LspManagerService {
let servers: LanguageClientConfig[] = [];
try {
let configData = this.parseAndReturnLSPConfigData();
let _initializationOptions = this.getInitializationOptions(mode, configData);
let lspConfigData = this.parseAndReturnLSPConfigData();
let initializationOptions = this.getInitializationOptions(mode, lspConfigData);
servers = [
{
module: () => import("ace-linters/build/language-client"),
modes: mode,
type: "socket",
socket: new WebSocket( configData[mode]["socket"] ),
initializationOptions: _initializationOptions
socket: new WebSocket( lspConfigData[mode]["socket"] ),
initializationOptions: initializationOptions
}
];
} catch(error) {
@@ -97,14 +103,51 @@ export class LspManagerService {
this.languageProviders[mode] = AceLanguageClient.for(
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
}
);
this.languageProviders[mode].changeWorkspaceFolder(this.workspaceFolder);
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 {
let worker = new Worker(new URL('./webworker.js', import.meta.url));
return LanguageProvider.create(worker);

View File

@@ -37,6 +37,7 @@
<div class="row mt-2 md-2">
<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)="closeLanguageClient()">Close Language Client</button>
</div>
<div class="col">

View File

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