mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 03:11:08 +01:00
clean up a few warnings and a little code
This commit is contained in:
@@ -1,56 +1,46 @@
|
||||
package processing.mode.java.lsp;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.eclipse.lsp4j.CompletionItem;
|
||||
import org.eclipse.lsp4j.jsonrpc.CompletableFutures;
|
||||
import java.util.List;
|
||||
import processing.app.Base;
|
||||
import processing.app.Platform;
|
||||
import processing.app.Preferences;
|
||||
import processing.app.contrib.ModeContribution;
|
||||
import processing.mode.java.JavaMode;
|
||||
import java.io.File;
|
||||
import processing.app.Sketch;
|
||||
import processing.mode.java.CompletionGenerator;
|
||||
import processing.mode.java.PreprocService;
|
||||
import org.eclipse.lsp4j.services.LanguageClient;
|
||||
import processing.mode.java.ErrorChecker;
|
||||
import processing.app.Problem;
|
||||
import org.eclipse.lsp4j.PublishDiagnosticsParams;
|
||||
import org.eclipse.lsp4j.Diagnostic;
|
||||
import org.eclipse.lsp4j.Range;
|
||||
import org.eclipse.lsp4j.Position;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import processing.mode.java.PreprocSketch;
|
||||
import processing.mode.java.JavaTextArea;
|
||||
import java.util.Collections;
|
||||
import processing.mode.java.CompletionCandidate;
|
||||
import org.eclipse.lsp4j.InsertTextFormat;
|
||||
import org.eclipse.lsp4j.CompletionItemKind;
|
||||
import org.jsoup.Jsoup;
|
||||
import java.net.URI;
|
||||
import processing.app.SketchCode;
|
||||
import org.eclipse.lsp4j.TextEdit;
|
||||
import processing.mode.java.AutoFormat;
|
||||
import java.util.Optional;
|
||||
import java.util.HashSet;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.Map;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Set;
|
||||
import org.eclipse.lsp4j.CompletionItem;
|
||||
import org.eclipse.lsp4j.CompletionItemKind;
|
||||
import org.eclipse.lsp4j.Diagnostic;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import org.eclipse.lsp4j.InsertTextFormat;
|
||||
import org.eclipse.lsp4j.jsonrpc.CompletableFutures;
|
||||
import org.eclipse.lsp4j.Position;
|
||||
import org.eclipse.lsp4j.PublishDiagnosticsParams;
|
||||
import org.eclipse.lsp4j.Range;
|
||||
import org.eclipse.lsp4j.services.LanguageClient;
|
||||
import org.eclipse.lsp4j.TextEdit;
|
||||
import org.jsoup.Jsoup;
|
||||
import processing.app.Base;
|
||||
import processing.app.contrib.ModeContribution;
|
||||
import processing.app.Platform;
|
||||
import processing.app.Preferences;
|
||||
import processing.app.Problem;
|
||||
import processing.app.Sketch;
|
||||
import processing.app.SketchCode;
|
||||
import processing.mode.java.AutoFormat;
|
||||
import processing.mode.java.CompletionCandidate;
|
||||
import processing.mode.java.CompletionGenerator;
|
||||
import processing.mode.java.ErrorChecker;
|
||||
import processing.mode.java.JavaMode;
|
||||
import processing.mode.java.JavaTextArea;
|
||||
import processing.mode.java.PreprocService;
|
||||
import processing.mode.java.PreprocSketch;
|
||||
|
||||
class Offset {
|
||||
int line;
|
||||
int col;
|
||||
|
||||
Offset(int line, int col) {
|
||||
this.line = line;
|
||||
this.col = col;
|
||||
}
|
||||
}
|
||||
|
||||
class PdeAdapter {
|
||||
File rootPath;
|
||||
@@ -63,7 +53,7 @@ class PdeAdapter {
|
||||
ErrorChecker errorChecker;
|
||||
CompletableFuture<PreprocSketch> cps;
|
||||
CompletionGenerator suggestionGenerator;
|
||||
Set<URI> prevDiagnosticReportUris = new HashSet<URI>();
|
||||
Set<URI> prevDiagnosticReportUris = new HashSet<>();
|
||||
|
||||
|
||||
PdeAdapter(File rootPath, LanguageClient client) {
|
||||
@@ -100,6 +90,7 @@ class PdeAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static URI pathToUri(File path) {
|
||||
return path.toURI();
|
||||
}
|
||||
@@ -118,16 +109,14 @@ class PdeAdapter {
|
||||
}
|
||||
|
||||
void notifySketchChanged() {
|
||||
CompletableFuture<PreprocSketch> cps = new CompletableFuture<PreprocSketch>();
|
||||
CompletableFuture<PreprocSketch> cps = new CompletableFuture<>();
|
||||
this.cps = cps;
|
||||
preprocService.notifySketchChanged();
|
||||
errorChecker.notifySketchChanged();
|
||||
preprocService.whenDone(ps -> {
|
||||
cps.complete(ps);
|
||||
});
|
||||
preprocService.whenDone(cps::complete);
|
||||
}
|
||||
|
||||
Optional<SketchCode> findCodeByUri(URI uri) {
|
||||
Optional<SketchCode> findCodeByUri(URI uri) {
|
||||
return PdeAdapter.uriToPath(uri)
|
||||
.flatMap(path -> Arrays.stream(sketch.getCode())
|
||||
.filter(code -> code.getFile().equals(path))
|
||||
@@ -161,7 +150,7 @@ class PdeAdapter {
|
||||
? DiagnosticSeverity.Error
|
||||
: DiagnosticSeverity.Warning
|
||||
);
|
||||
return new AbstractMap.SimpleEntry<URI, Diagnostic>(
|
||||
return new AbstractMap.SimpleEntry<>(
|
||||
PdeAdapter.pathToUri(code.getFile()),
|
||||
dia
|
||||
);
|
||||
@@ -204,42 +193,31 @@ class PdeAdapter {
|
||||
char[] chs = insert.replace("(,", "($1,").toCharArray();
|
||||
insert = "";
|
||||
for (char ch : chs) {
|
||||
switch (ch) {
|
||||
case ',': {
|
||||
n += 1;
|
||||
insert += ",$" + n;
|
||||
}
|
||||
default: insert += ch;
|
||||
if (ch == ',') {
|
||||
n += 1;
|
||||
insert += ",$" + n;
|
||||
}
|
||||
insert += ch;
|
||||
}
|
||||
}
|
||||
item.setInsertText(insert);
|
||||
CompletionItemKind kind;
|
||||
switch (c.getType()) {
|
||||
case 0: // PREDEF_CLASS
|
||||
kind = CompletionItemKind.Class;
|
||||
break;
|
||||
case 1: // PREDEF_FIELD
|
||||
kind = CompletionItemKind.Constant;
|
||||
break;
|
||||
case 2: // PREDEF_METHOD
|
||||
kind = CompletionItemKind.Function;
|
||||
break;
|
||||
case 3: // LOCAL_CLASS
|
||||
kind = CompletionItemKind.Class;
|
||||
break;
|
||||
case 4: // LOCAL_METHOD
|
||||
kind = CompletionItemKind.Method;
|
||||
break;
|
||||
case 5: // LOCAL_FIELD
|
||||
kind = CompletionItemKind.Field;
|
||||
break;
|
||||
case 6: // LOCAL_VARIABLE
|
||||
kind = CompletionItemKind.Variable;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown completion type: " + c.getType());
|
||||
}
|
||||
CompletionItemKind kind = switch (c.getType()) {
|
||||
case 0 -> // PREDEF_CLASS
|
||||
CompletionItemKind.Class;
|
||||
case 1 -> // PREDEF_FIELD
|
||||
CompletionItemKind.Constant;
|
||||
case 2 -> // PREDEF_METHOD
|
||||
CompletionItemKind.Function;
|
||||
case 3 -> // LOCAL_CLASS
|
||||
CompletionItemKind.Class;
|
||||
case 4 -> // LOCAL_METHOD
|
||||
CompletionItemKind.Method;
|
||||
case 5 -> // LOCAL_FIELD
|
||||
CompletionItemKind.Field;
|
||||
case 6 -> // LOCAL_VARIABLE
|
||||
CompletionItemKind.Variable;
|
||||
default -> throw new IllegalArgumentException("Unknown completion type: " + c.getType());
|
||||
};
|
||||
item.setKind(kind);
|
||||
item.setDetail(Jsoup.parse(c.getLabel()).text());
|
||||
return item;
|
||||
@@ -327,4 +305,15 @@ class PdeAdapter {
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
static class Offset {
|
||||
int line;
|
||||
int col;
|
||||
|
||||
Offset(int line, int col) {
|
||||
this.line = line;
|
||||
this.col = col;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,23 +57,18 @@ class PdeTextDocumentService implements TextDocumentService {
|
||||
public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion(CompletionParams params) {
|
||||
System.out.println("completion");
|
||||
URI uri = URI.create(params.getTextDocument().getUri());
|
||||
return pls.getAdapter(uri).map(adapter -> {
|
||||
CompletableFuture<Either<List<CompletionItem>, CompletionList>> result = adapter.generateCompletion(
|
||||
uri,
|
||||
params.getPosition().getLine(),
|
||||
params.getPosition().getCharacter()
|
||||
).thenApply(Either::forLeft);
|
||||
return result;
|
||||
})
|
||||
return pls.getAdapter(uri).map(adapter -> adapter.generateCompletion(
|
||||
uri,
|
||||
params.getPosition().getLine(),
|
||||
params.getPosition().getCharacter()
|
||||
).<Either<List<CompletionItem>, CompletionList>>thenApply(Either::forLeft))
|
||||
.orElse(CompletableFutures.computeAsync(_x -> Either.forLeft(Collections.emptyList())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<CompletionItem> resolveCompletionItem(CompletionItem params) {
|
||||
System.out.println("resolveCompletionItem");
|
||||
return CompletableFutures.computeAsync(_x -> {
|
||||
return params;
|
||||
});
|
||||
return CompletableFutures.computeAsync(_x -> params);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -81,11 +76,10 @@ class PdeTextDocumentService implements TextDocumentService {
|
||||
System.out.println("formatting");
|
||||
URI uri = URI.create(params.getTextDocument().getUri());
|
||||
return pls.getAdapter(uri).map(adapter -> {
|
||||
CompletableFuture<List<? extends TextEdit>> result = CompletableFutures.computeAsync(_x -> {
|
||||
return adapter.format(uri).map(Collections::singletonList).orElse(Collections.emptyList());
|
||||
});
|
||||
return result;
|
||||
})
|
||||
.orElse(CompletableFuture.completedFuture(Collections.emptyList()));
|
||||
return CompletableFutures.<List<? extends TextEdit>>computeAsync(_x -> {
|
||||
return adapter.format(uri).map(Collections::singletonList).orElse(Collections.emptyList());
|
||||
});
|
||||
})
|
||||
.orElse(CompletableFuture.completedFuture(Collections.emptyList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,28 +24,22 @@ class PdeWorkspaceService implements WorkspaceService {
|
||||
URI uri = URI.create(change.getUri());
|
||||
pls.getAdapter(uri).ifPresent(adapter -> {
|
||||
switch (change.getType()) {
|
||||
case Created:
|
||||
PdeAdapter.uriToPath(uri).ifPresent(path -> {
|
||||
adapter.sketch.loadNewTab(path.getName().toString(), "pde", true);
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
break;
|
||||
case Changed:
|
||||
adapter.findCodeByUri(uri).ifPresent(code -> {
|
||||
try {
|
||||
code.load();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
break;
|
||||
case Deleted:
|
||||
adapter.findCodeByUri(uri).ifPresent(code -> {
|
||||
adapter.sketch.removeCode(code);
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
break;
|
||||
case Created -> PdeAdapter.uriToPath(uri).ifPresent(path -> {
|
||||
adapter.sketch.loadNewTab(path.getName(), "pde", true);
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
case Changed -> adapter.findCodeByUri(uri).ifPresent(code -> {
|
||||
try {
|
||||
code.load();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
case Deleted -> adapter.findCodeByUri(uri).ifPresent(code -> {
|
||||
adapter.sketch.removeCode(code);
|
||||
adapter.notifySketchChanged();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user