Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ide/lsp.client/external/binaries-list
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
# specific language governing permissions and limitations
# under the License.

4FF29B93C50F6768C9A73040AE818E96EB2E68DB org.eclipse.lsp4j:org.eclipse.lsp4j:0.9.0
DA453B2A6C9BBD9369DE41365C59E88574EC1F0B org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.9.0
1CF7FCE1E2F4DFA76C3B91E4C2D72EA0C6899945 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.9.0
419B5181A4B2D054BF8FF764FCEB67DF09D87E7D org.eclipse.lsp4j:org.eclipse.lsp4j:0.12.0
80607078CEB77F92C6BFEC3CDEC050D3222EFDFF org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.12.0
8A80D1368F19A2F6E328E41B9BC68E53C628C68B org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.12.0
751B324BED8C077BF6B7B8C2055595EB8C28509D org.eclipse.xtend:org.eclipse.xtend.lib:2.19.0
F3626A047A3ABFA47CF62D76BDEF1D246F7985F6 org.eclipse.xtend:org.eclipse.xtend.lib.macro:2.19.0
997BA9935D0069B3F1CD2F93B56B91D24E9C60A0 org.eclipse.xtext:org.eclipse.xtext.xbase.lib:2.19.0
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Name: Eclipse Language Server Protocol Library
Origin: Eclipse
Version: 0.9.0
Version: 0.12.0
License: EPL-v20
URL: http://www.eclipse.org/
Description: Eclipse Language Server Protocol Library
Files: org.eclipse.lsp4j-0.9.0.jar org.eclipse.lsp4j.generator-0.9.0.jar org.eclipse.lsp4j.jsonrpc-0.9.0.jar
Files: org.eclipse.lsp4j-0.12.0.jar org.eclipse.lsp4j.generator-0.12.0.jar org.eclipse.lsp4j.jsonrpc-0.12.0.jar

Eclipse Public License - v 2.0
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
Expand Down
6 changes: 3 additions & 3 deletions ide/lsp.client/nbproject/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
javadoc.arch=${basedir}/arch.xml
release.external/org.eclipse.lsp4j-0.9.0.jar=modules/ext/org.eclipse.lsp4j-0.9.0.jar
release.external/org.eclipse.lsp4j.generator-0.9.0.jar=modules/ext/org.eclipse.lsp4j.generator-0.9.0.jar
release.external/org.eclipse.lsp4j.jsonrpc-0.9.0.jar=modules/ext/org.eclipse.lsp4j.jsonrpc-0.9.0.jar
release.external/org.eclipse.lsp4j-0.12.0.jar=modules/ext/org.eclipse.lsp4j-0.12.0.jar
release.external/org.eclipse.lsp4j.generator-0.12.0.jar=modules/ext/org.eclipse.lsp4j.generator-0.12.0.jar
release.external/org.eclipse.lsp4j.jsonrpc-0.12.0.jar=modules/ext/org.eclipse.lsp4j.jsonrpc-0.12.0.jar
release.external/org.eclipse.xtend.lib-2.19.0.jar=modules/ext/org.eclipse.xtend.lib-2.19.0.jar
release.external/org.eclipse.xtend.lib.macro-2.19.0.jar=modules/ext/org.eclipse.xtend.lib.macro-2.19.0.jar
release.external/org.eclipse.xtext.xbase.lib-2.19.0.jar=modules/ext/org.eclipse.xtext.xbase.lib-2.19.0.jar
Expand Down
12 changes: 6 additions & 6 deletions ide/lsp.client/nbproject/project.xml
Original file line number Diff line number Diff line change
Expand Up @@ -414,16 +414,16 @@
<package>org.netbeans.modules.lsp.client.spi</package>
</public-packages>
<class-path-extension>
<runtime-relative-path>ext/org.eclipse.lsp4j-0.9.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j-0.9.0.jar</binary-origin>
<runtime-relative-path>ext/org.eclipse.lsp4j-0.12.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j-0.12.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/org.eclipse.xtend.lib.macro-2.19.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.xtend.lib.macro-2.19.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/org.eclipse.lsp4j.generator-0.9.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j.generator-0.9.0.jar</binary-origin>
<runtime-relative-path>ext/org.eclipse.lsp4j.generator-0.12.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j.generator-0.12.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/org.eclipse.xtend.lib-2.19.0.jar</runtime-relative-path>
Expand All @@ -434,8 +434,8 @@
<binary-origin>external/org.eclipse.xtext.xbase.lib-2.19.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/org.eclipse.lsp4j.jsonrpc-0.9.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j.jsonrpc-0.9.0.jar</binary-origin>
<runtime-relative-path>ext/org.eclipse.lsp4j.jsonrpc-0.12.0.jar</runtime-relative-path>
<binary-origin>external/org.eclipse.lsp4j.jsonrpc-0.12.0.jar</binary-origin>
</class-path-extension>
</data>
</configuration>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@
*/
package org.netbeans.modules.lsp.client;

import com.google.gson.InstanceCreator;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.lang.reflect.Type;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URI;
Expand All @@ -48,10 +50,13 @@
import java.util.stream.Collectors;
import javax.swing.event.ChangeListener;
import org.eclipse.lsp4j.ClientCapabilities;
import org.eclipse.lsp4j.CompletionCapabilities;
import org.eclipse.lsp4j.DocumentSymbolCapabilities;
import org.eclipse.lsp4j.InitializeParams;
import org.eclipse.lsp4j.InitializeResult;
import org.eclipse.lsp4j.ResourceOperationKind;
import org.eclipse.lsp4j.SemanticTokens;
import org.eclipse.lsp4j.SemanticTokensLegend;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.lsp4j.SymbolCapabilities;
import org.eclipse.lsp4j.SymbolKind;
Expand Down Expand Up @@ -268,7 +273,23 @@ private static LSPBindings buildBindings(ServerDescription inDescription, Projec
InputStream in = LanguageServerProviderAccessor.getINSTANCE().getInputStream(desc);
OutputStream out = LanguageServerProviderAccessor.getINSTANCE().getOutputStream(desc);
Process p = LanguageServerProviderAccessor.getINSTANCE().getProcess(desc);
Launcher<LanguageServer> launcher = LSPLauncher.createClientLauncher(lci, in, out);
Launcher<LanguageServer> launcher = new LSPLauncher.Builder<LanguageServer>()
.setLocalService(lci)
.setRemoteInterface(LanguageServer.class)
.setInput(in)
.setOutput(out)
.configureGson(gson -> {
gson.registerTypeAdapter(SemanticTokensLegend.class, new InstanceCreator<SemanticTokensLegend>() {
@Override public SemanticTokensLegend createInstance(Type type) {
return new SemanticTokensLegend(Collections.emptyList(), Collections.emptyList());
}
});
gson.registerTypeAdapter(SemanticTokens.class, new InstanceCreator<SemanticTokens>() {
@Override public SemanticTokens createInstance(Type type) {
return new SemanticTokens(Collections.emptyList());
}
});
}).create();
launcher.startListening();
LanguageServer server = launcher.getRemoteProxy();
InitializeResult result = initServer(p, server, dir); //XXX: what if a different root is expected????
Expand Down
4 changes: 4 additions & 0 deletions ide/lsp.client/src/org/netbeans/modules/lsp/client/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -301,4 +301,8 @@ public static void open(String targetUri, Range targetRange) {
public static boolean isTrue(Boolean b) {
return b != null && b;
}
public static boolean isEnabled(Either<Boolean, ?> settings) {
return settings != null && (settings.isLeft() ? isTrue(settings.getLeft())
: settings.getRight() != null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ private void update() {
LSPBindings bindings = file != null ? LSPBindings.getBindings(file) : null;
Runnable r;

if (bindings != null && Utils.isTrue(bindings.getInitResult().getCapabilities().getDocumentSymbolProvider())) {
if (bindings != null && Utils.isEnabled(bindings.getInitResult().getCapabilities().getDocumentSymbolProvider())) {
r = () -> {
setPreferredSize(sidebar.getPreferredSize());
setMaximumSize(sidebar.getMaximumSize());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,13 @@ public void defaultAction(JTextComponent jtc) {
commit("");
}
private void commit(String appendText) {
TextEdit te = i.getTextEdit();
if (i.getTextEdit().isRight()) {
//TODO: the NetBeans client does not current support InsertReplaceEdits, should not happen
Completion.get().hideDocumentation();
Completion.get().hideCompletion();
return ;
}
TextEdit te = i.getTextEdit().getLeft();
NbDocument.runAtomic((StyledDocument) doc, () -> {
try {
int endPos;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ public void reformat() throws BadLocationException {
if (file != null) {
LSPBindings bindings = LSPBindings.getBindings(file);
if (bindings != null) {
Boolean documentFormatting = bindings.getInitResult().getCapabilities().getDocumentFormattingProvider();
Boolean rangeFormatting = bindings.getInitResult().getCapabilities().getDocumentRangeFormattingProvider();
if (rangeFormatting != null && rangeFormatting) {
boolean documentFormatting = Utils.isEnabled(bindings.getInitResult().getCapabilities().getDocumentFormattingProvider());
boolean rangeFormatting = Utils.isEnabled(bindings.getInitResult().getCapabilities().getDocumentRangeFormattingProvider());
if (rangeFormatting) {
rangeFormat(file, bindings);
} else if (documentFormatting != null && documentFormatting) {
} else if (documentFormatting) {
documentFormat(file, bindings);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
Expand All @@ -35,6 +36,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.StyledDocument;
Expand All @@ -52,14 +54,21 @@
import org.eclipse.lsp4j.ExecuteCommandParams;
import org.eclipse.lsp4j.MessageActionItem;
import org.eclipse.lsp4j.MessageParams;
import org.eclipse.lsp4j.ProgressParams;
import org.eclipse.lsp4j.PublishDiagnosticsParams;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.lsp4j.ShowMessageRequestParams;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.TextEdit;
import org.eclipse.lsp4j.WorkDoneProgressBegin;
import org.eclipse.lsp4j.WorkDoneProgressCreateParams;
import org.eclipse.lsp4j.WorkDoneProgressEnd;
import org.eclipse.lsp4j.WorkDoneProgressNotification;
import org.eclipse.lsp4j.WorkDoneProgressReport;
import org.eclipse.lsp4j.WorkspaceEdit;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.lsp4j.services.LanguageClient;
import org.netbeans.api.progress.*;
import org.netbeans.modules.lsp.client.LSPBindings;
import org.netbeans.modules.lsp.client.Utils;
import org.netbeans.spi.editor.hints.ChangeInfo;
Expand All @@ -74,6 +83,7 @@
import org.openide.filesystems.URLMapper;
import org.openide.text.NbDocument;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle.Messages;
import org.openide.util.RequestProcessor;

/**
Expand All @@ -100,6 +110,53 @@ public void telemetryEvent(Object arg0) {
System.err.println("telemetry: " + arg0);
}

@Override
public CompletableFuture<Void> createProgress(WorkDoneProgressCreateParams params) {
return CompletableFuture.completedFuture(null);
}

private final Map<Object, ProgressHandle> key2Progress = new HashMap<>();

public void notifyProgress(ProgressParams params) {
Either<WorkDoneProgressNotification, Object> value = params.getValue();
if (value.isRight()) {
return ;
}
WorkDoneProgressNotification n = value.getLeft();
SwingUtilities.invokeLater(() -> {
switch (n.getKind()) {
case begin: {
WorkDoneProgressBegin progress = (WorkDoneProgressBegin) n;
ProgressHandle handle = ProgressHandle.createHandle(progress.getTitle());
key2Progress.put(params.getToken().get(), handle);
handle.start();
handle.progress(progress.getMessage());
break;
}
case report: {
WorkDoneProgressReport progress = (WorkDoneProgressReport) n;
ProgressHandle handle = key2Progress.get(params.getToken().get());
if (progress.getPercentage() != null) {
handle.switchToDeterminate(100);
handle.progress(progress.getPercentage());
} else {
handle.switchToIndeterminate();
}
if (progress.getMessage() != null) {
handle.progress(progress.getMessage());
}
break;
}
case end: {
WorkDoneProgressEnd progress = (WorkDoneProgressEnd) n;
ProgressHandle handle = key2Progress.get(params.getToken().get());
handle.finish();
break;
}
}
});
}

@Override
public void publishDiagnostics(PublishDiagnosticsParams pdp) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ private OffsetsBag computeHighlights(Document doc, int caretPos) {
if (server == null) {
return result;
}
Boolean hasDocumentHighlight = server.getInitResult().getCapabilities().getDocumentHighlightProvider();
if (hasDocumentHighlight == null || !hasDocumentHighlight) {
if (!Utils.isEnabled(server.getInitResult().getCapabilities().getDocumentHighlightProvider())) {
return result;
}
String uri = Utils.toURI(file);
Expand Down
Loading