Вот код, который я пытался получить для диагностики машинописного кода с помощью tsserver, но он вообще ничего не напечатал
Код: Выделить всё
public class client {
public static void start() {
// Start the typescript-language-server as a subprocess
ProcessBuilder processBuilder = new ProcessBuilder("typescript-language-server.cmd", "--stdio","--log-level=4" );
processBuilder.redirectErrorStream(true);
Process serverProcess = null;
try {
serverProcess = processBuilder.start();
System.out.println("Server started");
} catch (IOException exception) {
System.err.println("Failed to create process :" + exception);
System.exit(1);
}
// Obtain InputStream and OutputStream from the server process
InputStream serverInput = serverProcess.getInputStream();
OutputStream serverOutput = serverProcess.getOutputStream();
LanguageClientImpl languageClient = new LanguageClientImpl();
// a launcher for the LSP client
Launcher launcher = Launcher.createLauncher(languageClient, LanguageServer.class,serverInput,serverOutput);
LanguageServer server = launcher.getRemoteProxy();
launcher.startListening();
InitializeParams params = new InitializeParams();
List folders = new ArrayList();
folders.add(new WorkspaceFolder("file:///E:/languaug_server/LSP4jClient/app/src/main","resources"));
params.setWorkspaceFolders(folders);
params.setCapabilities(new ClientCapabilities());
CompletableFuture initialized = server.initialize(params);
try{
initialized.get();
// System.out.println("params initialized wait passed");
// Open the document
String fileUri = Paths.get("E:/languaug_server/LSP4jClient/app/src/main/resources/sample.ts").toAbsolutePath().toUri().toString();
DidOpenTextDocumentParams openParams = new DidOpenTextDocumentParams();
TextDocumentItem textDocumentItem = new TextDocumentItem(fileUri, "typescript", 1, "const num1 = 10;\n" +
"const num2 = 5;\n" +
"\n" +
"console.log(`${num1} + ${num2} = ${calculator.add(num1, num2)}`);\n" +
"console.log(`${num1} - ${num2} = ${calculator.subtract(num1, num2)}`);\n" +
"console.log(`${num1} * ${num2} = ${calculator.multiply(num1, num2)}`);\n" +
"console.log(`${num1} / ${num2} = ${calculator.divide(num1, num2)}`);");
openParams.setTextDocument(textDocumentItem);
server.getTextDocumentService().didOpen(openParams);
// Request diagnostics
CompletableFuture diagnosticsFuture = new CompletableFuture();
languageClient.setDiagnosticsConsumer(diagnostics -> {
System.out.println("Received diagnostics: " + diagnostics);
diagnosticsFuture.complete(diagnostics);
});
// Wait for diagnostics
List diagnostics = diagnosticsFuture.get();
System.out.println("program passed diagnostics");
// Print diagnostics
System.out.println("Diagnostics for " + fileUri + ":");
for (Diagnostic diagnostic : diagnostics) {
System.out.println(diagnostic.getSeverity() + ": " + diagnostic.getMessage() + " at " + diagnostic.getRange());
}
}catch (Exception e){
System.out.println("Linting error :" + e.toString());
}
serverProcess.destroy();
}// end of start
private static class LanguageClientImpl implements LanguageClient, LanguageClientAware {
private Consumer diagnosticsConsumer;
public void setDiagnosticsConsumer(Consumer consumer) {
this.diagnosticsConsumer = consumer;
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
System.out.println("Diagnostics received: " + diagnostics.getDiagnostics().size() + " diagnostics");
if (diagnosticsConsumer != null) {
diagnosticsConsumer.accept(diagnostics.getDiagnostics());
}
}
@Override
public void telemetryEvent(Object object) {
System.out.println("telemetry called:"+object.toString());
}
@Override
public void showMessage(MessageParams messageParams) {
System.out.println("Message received: " + messageParams.getMessage());
}
@Override
public void logMessage(MessageParams messageParams) {
System.out.println("Log received: " + messageParams.getMessage());
}
@Override
public CompletableFuture showMessageRequest(ShowMessageRequestParams requestParams) {
System.out.println("showMessageRequest called:"+requestParams.getMessage());
// throw new UnsupportedOperationException("Unimplemented method 'showMessageRequest'");
return null;
}
@Override
public void connect(LanguageClient client) {
System.out.println("connect called");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... sing-lsp4j
Мобильная версия