7 Commits

Author SHA1 Message Date
RubenKraft
a9bbe834cc Update README.md 2025-09-24 14:43:07 +00:00
Ruben
4fbf9133a5 fix: bump version 2025-09-23 18:38:31 +02:00
Ruben
972d9014ba fix: bump version 2025-09-23 18:38:01 +02:00
Ruben
4f4404d366 fix: cleanup and fixes 2025-09-23 18:37:37 +02:00
Ruben
2dfbef6d7f fix: except VerifyError in Catch Clause 2025-09-23 18:26:58 +02:00
Ruben
7e6e968b0f feat: do not show 100 times the insert 2025-09-22 18:22:05 +02:00
Ruben
dded453ba3 feat: update jar and Version 2025-09-22 15:42:25 +02:00
7 changed files with 49 additions and 45 deletions

View File

@@ -3,7 +3,7 @@
"name": "java-tx-language-extension",
"displayName": "Java-TX Language Extension",
"description": "The Language Extension for Java-TX with Typehints and Syntax Checks",
"version": "0.0.9",
"version": "0.0.14",
"engines": {
"vscode": "^1.94.0"
},

View File

@@ -80,6 +80,8 @@ public class ChangeHandler {
if (!syntaxErrors.isEmpty()) {
clientService.publishDiagnostics(params.getTextDocument().getUri(), syntaxErrors);
}else {
clientService.updateClient();
}
logService.log("Found [" + syntaxErrors.size() + "] Syntax Errors in Document.");
@@ -164,7 +166,7 @@ public class ChangeHandler {
bw.close();
try {
ArrayList<LSPVariable> variables = typeResolver.infereInput(tempFile2.toURI().toString(), input, true);
ArrayList<LSPVariable> variables = typeResolver.infereInput(tempFile2.toURI().toString(), input);
cacheService.setVariables(variables);
DiagnosticsAndTypehints diagnosticsAndTypehints = conversionHelper.variablesToDiagnosticsAndTypehintsWithInput(variables, input);
@@ -175,10 +177,9 @@ public class ChangeHandler {
cacheService.updateGlobalMaps(diagnostics, typeHint, params.getTextDocument().getUri());
List<Diagnostic> allDiagnostics = new ArrayList<>(diagnostics);
allDiagnostics.addAll(parserService.getDiagnosticsOfErrors(input, params.getTextDocument().getUri()));
clientService.publishDiagnostics(params.getTextDocument().getUri(), allDiagnostics);
} catch (Exception f) {
} catch (Exception | VerifyError f) {
logService.log("[didSave] Error trying to get Inlay-Hints and Diagnostics for Client: " + f.getMessage(), MessageType.Error);
for (StackTraceElement elem : f.getStackTrace()) {
@@ -190,10 +191,6 @@ public class ChangeHandler {
tempFile2.delete();
} catch (Exception e) {
logService.log("[didSave] Error trying to get Inlay-Hints and Diagnostics for Client: " + e.getMessage(), MessageType.Error);
for (StackTraceElement elem : e.getStackTrace()) {
logService.log(elem.toString());
}
clientService.showMessage(MessageType.Error, e.getMessage() == null ? "null" : e.getMessage());
cacheService.updateGlobalMaps(new ArrayList<>(), new ArrayList<>(), params.getTextDocument().getUri());

View File

@@ -105,6 +105,7 @@ public class CodeActionHandler {
String documentUri = params.getTextDocument().getUri();
Range rangeOfInsert = params.getRange();
if (typeResolver.getInserts() != null) {
//All Diagnostics that are in range of the hover -> All Diagnostics of the selected Variable and thus all Types of the Variable
Map<String, List<PlaceholderVariable>> typeInsertsOverlapping = getOverlapping(typeResolver.getInserts(), rangeOfInsert.getStart().getLine() + 1, rangeOfInsert.getStart().getCharacter(), rangeOfInsert.getEnd().getCharacter());
logService.log("Inserts are:");
@@ -135,7 +136,10 @@ public class CodeActionHandler {
CodeAction action = new CodeAction("Insert " + conversionHelper.cleanType(typeInsert.getInsertString()));
action.setKind(CodeActionKind.QuickFix);
action.setEdit(edit);
if(!actions.stream().map(el -> el.getRight().getTitle()).toList().contains(action.getTitle())){
actions.add(Either.forRight(action));
}
} catch (Exception e) {
logService.log("Error creating Actions, returning empty List. The Error was: " + e.getMessage(), MessageType.Error);
}
@@ -144,6 +148,9 @@ public class CodeActionHandler {
return actions;
}
return new ArrayList<>();
}
public List<Either<Command, CodeAction>> handleCodeAction(CodeActionParams params) {
String documentUri = params.getTextDocument().getUri();

View File

@@ -1,6 +1,7 @@
package de.dhbw.handler;
import com.google.common.base.Stopwatch;
import com.google.common.base.Verify;
import de.dhbw.model.DiagnosticsAndTypehints;
import de.dhbw.service.*;
import de.dhbw.helper.ConversionHelper;
@@ -51,19 +52,20 @@ public class SaveHandler {
List<Diagnostic> syntaxErrors = parserService.getDiagnosticsOfErrors(fileInput, didSaveTextDocumentParams.getTextDocument().getUri());
if (!syntaxErrors.isEmpty()) {
clientService.publishDiagnostics(didSaveTextDocumentParams.getTextDocument().getUri(), syntaxErrors);
}else {
clientService.updateClient();
}
logService.log("Found [" + syntaxErrors.size() + "] Syntax Errors in Document.");
if (syntaxErrors.isEmpty()) {
cacheService.getLastSavedFiles().put(didSaveTextDocumentParams.getTextDocument().getUri(), fileInput);
//typeResolver.getCompilerInput(didSaveTextDocumentParams.getTextDocument().getUri(), fileInput);
if (fileInput == null) {
logService.log("[didSave] Input of Text Document is null in TextDocument-Hashmap.", MessageType.Error);
}
ArrayList<LSPVariable> variables = typeResolver.infereInput(didSaveTextDocumentParams.getTextDocument().getUri(), fileInput, false);
ArrayList<LSPVariable> variables = typeResolver.infereInput(didSaveTextDocumentParams.getTextDocument().getUri(), fileInput);
cacheService.setVariables(variables);
DiagnosticsAndTypehints diagnosticsAndTypehints = conversionHelper.variablesToDiagnosticsAndTypehints(variables, didSaveTextDocumentParams.getTextDocument().getUri());
@@ -79,16 +81,13 @@ public class SaveHandler {
}
} catch (Exception e) {
} catch (Exception | VerifyError e) {
logService.log("[didSave] Error trying to get Inlay-Hints and Diagnostics for Client: " + e.getMessage(), MessageType.Error);
for (StackTraceElement elem : e.getStackTrace()) {
logService.log(elem.toString());
}
clientService.showMessage(MessageType.Error, e.getMessage() == null ? "null" : e.getMessage());
cacheService.updateGlobalMaps(new ArrayList<>(), new ArrayList<>(), didSaveTextDocumentParams.getTextDocument().getUri());
} finally {
}
finally {
sWatch.stop();
logService.log("[didSave] Finished Calculating in [" + sWatch.elapsed().toSeconds() + "s]", MessageType.Info);
}

View File

@@ -140,7 +140,7 @@ public class TypeResolver {
return variables;
}
public ArrayList<LSPVariable> infereInput(String pathString, String input, boolean a) throws IOException, ClassNotFoundException, URISyntaxException {
public ArrayList<LSPVariable> infereInput(String pathString, String input) throws IOException, ClassNotFoundException, URISyntaxException {
System.setOut(new PrintStream(OutputStream.nullOutputStream()));
LanguageServerInterface languageServerInterface = new LanguageServerInterface();

View File

@@ -63,7 +63,8 @@ The Language Server in itself can be used for any Client. The Clients task is to
If you make changes in the Compiler Interface, you have to change the jar and therefore the Dependency in the Java TX Language Server
You can follow this steps:
1. package the JavaTX Compiler
2. take the Jar-File and copy it into the /lib Folder
2. create a lib Folder at ./LangaugeServer -> ./LanguageServer/lib
2. take the Jar-File and copy it into the /lib Folder at
3. execute this Maven command to add the Jar in your local Repository: ```mvn install:install-file -Dfile=lib/JavaTXcompiler-0.1-jar-with-dependencies.jar -DgroupId=de.dhbwstuttgart -DartifactId=JavaTXcompiler -Dversion=0.1 -Dpackaging=jar```
4. run ```maven clean```, ```validate``` and ```install``` to load the new Dependency
5. you can now package the Language Server or change the code accordingly.