Java 类org.eclipse.lsp4j.SignatureHelp 实例源码
项目:vscode-javac
文件:Signatures.java
private SignatureHelp constructorHelp(NewClassTree leaf) {
Trees trees = Trees.instance(task);
TreePath identifierPath =
TreePath.getPath(cursor.getCompilationUnit(), leaf.getIdentifier());
Element classElement = trees.getElement(identifierPath);
List<ExecutableElement> candidates =
classElement
.getEnclosedElements()
.stream()
.filter(member -> member.getKind() == ElementKind.CONSTRUCTOR)
.map(method -> (ExecutableElement) method)
.collect(Collectors.toList());
List<SignatureInformation> signatures =
candidates
.stream()
.map(member -> constructorInfo(member))
.collect(Collectors.toList());
int activeSignature = candidates.indexOf(classElement);
return new SignatureHelp(
signatures,
activeSignature < 0 ? null : activeSignature,
activeParameter(leaf.getArguments()));
}
项目:vscode-javac
文件:Signatures.java
private SignatureHelp methodHelp(MethodInvocationTree leaf) {
Trees trees = Trees.instance(task);
TreePath methodPath = TreePath.getPath(cursor.getCompilationUnit(), leaf.getMethodSelect());
Element methodElement = trees.getElement(methodPath);
Name name = methodElement.getSimpleName();
List<ExecutableElement> candidates =
methodElement
.getEnclosingElement()
.getEnclosedElements()
.stream()
.filter(
member ->
member.getKind() == ElementKind.METHOD
&& member.getSimpleName().equals(name))
.map(method -> (ExecutableElement) method)
.collect(Collectors.toList());
List<SignatureInformation> signatures =
candidates.stream().map(member -> methodInfo(member)).collect(Collectors.toList());
int activeSignature = candidates.indexOf(methodElement);
return new SignatureHelp(
signatures,
activeSignature < 0 ? null : activeSignature,
activeParameter(leaf.getArguments()));
}
项目:vscode-javac
文件:SignatureHelpTest.java
private SignatureHelp doHelp(String file, int row, int column) throws IOException {
TextDocumentIdentifier document = new TextDocumentIdentifier();
document.setUri(FindResource.uri(file).toString());
Position position = new Position();
position.setLine(row - 1);
position.setCharacter(column - 1);
TextDocumentPositionParams p = new TextDocumentPositionParams();
p.setTextDocument(document);
p.setPosition(position);
try {
return server.getTextDocumentService().signatureHelp(p).get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
项目:eclipse.jdt.ls
文件:SignatureHelpRequestor.java
public SignatureHelp getSignatureHelp(IProgressMonitor monitor) {
SignatureHelp signatureHelp = new SignatureHelp();
response.setProposals(proposals);
CompletionResponses.store(response);
List<SignatureInformation> infos = new ArrayList<>();
for (int i = 0; i < proposals.size(); i++) {
if (!monitor.isCanceled()) {
infos.add(this.toSignatureInformation(proposals.get(i)));
} else {
return signatureHelp;
}
}
infos.sort((SignatureInformation a, SignatureInformation b) -> a.getParameters().size() - b.getParameters().size());
signatureHelp.getSignatures().addAll(infos);
return signatureHelp;
}
项目:eclipse.jdt.ls
文件:SignatureHelpHandlerTest.java
@Test
public void testSignatureHelp_singleMethod() throws JavaModelException {
IPackageFragment pack1 = sourceFolder.createPackageFragment("test1", false, null);
StringBuilder buf = new StringBuilder();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append(" /** This is a method */\n");
buf.append(" public int foo(String s) { }\n");
buf.append(" public int bar(String s) { this.foo() }\n");
buf.append("}\n");
ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);
SignatureHelp help = getSignatureHelp(cu, 4, 39);
assertNotNull(help);
assertEquals(help.getSignatures().size(), 1);
assertEquals(help.getSignatures().get(0).getLabel(), "foo(String s) : int");
assertTrue(help.getSignatures().get(0).getDocumentation().length() > 0);
}
项目:eclipse.jdt.ls
文件:SignatureHelpHandlerTest.java
@Test
public void testSignatureHelp_multipeMethod() throws JavaModelException {
IPackageFragment pack1 = sourceFolder.createPackageFragment("test1", false, null);
StringBuilder buf = new StringBuilder();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append(" public int foo(String s) { }\n");
buf.append(" public int foo(int s) { }\n");
buf.append(" public int foo(int s, String s) { }\n");
buf.append(" public int bar(String s) { this.foo(2, ) }\n");
buf.append("}\n");
ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);
SignatureHelp help = getSignatureHelp(cu, 5, 42);
assertNotNull(help);
assertEquals(help.getSignatures().size(), 3);
assertEquals(help.getActiveParameter(), (Integer) 1);
assertEquals(help.getSignatures().get(help.getActiveSignature()).getLabel(), "foo(int s, String s) : int");
}
项目:xtext-core
文件:LanguageServerImpl.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(final TextDocumentPositionParams params) {
final Function1<CancelIndicator, SignatureHelp> _function = (CancelIndicator cancelIndicator) -> {
final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri());
final IResourceServiceProvider serviceProvider = this.languagesRegistry.getResourceServiceProvider(uri);
ISignatureHelpService _get = null;
if (serviceProvider!=null) {
_get=serviceProvider.<ISignatureHelpService>get(ISignatureHelpService.class);
}
final ISignatureHelpService helper = _get;
if ((helper == null)) {
return ISignatureHelpService.EMPTY;
}
final Function2<Document, XtextResource, SignatureHelp> _function_1 = (Document doc, XtextResource resource) -> {
return helper.getSignatureHelp(doc, resource, params, cancelIndicator);
};
return this.workspaceManager.<SignatureHelp>doRead(uri, _function_1);
};
return this.requestManager.<SignatureHelp>runRead(_function);
}
项目:vscode-javac
文件:Signatures.java
private Optional<SignatureHelp> get() {
if (cursor.getLeaf().getKind() == Tree.Kind.METHOD_INVOCATION)
return Optional.of(methodHelp((MethodInvocationTree) cursor.getLeaf()));
if (cursor.getLeaf().getKind() == Tree.Kind.NEW_CLASS)
return Optional.of(constructorHelp((NewClassTree) cursor.getLeaf()));
if (cursor.getParentPath().getLeaf().getKind() == Tree.Kind.METHOD_INVOCATION)
return Optional.of(methodHelp((MethodInvocationTree) cursor.getParentPath().getLeaf()));
if (cursor.getParentPath().getLeaf().getKind() == Tree.Kind.NEW_CLASS)
return Optional.of(constructorHelp((NewClassTree) cursor.getParentPath().getLeaf()));
else return Optional.empty();
}
项目:vscode-javac
文件:SignatureHelpTest.java
@Test
public void partlyFilledIn() throws IOException {
SignatureHelp help = doHelp("/org/javacs/example/SignatureHelp.java", 8, 39);
assertThat(help.getSignatures(), hasSize(2));
assertThat(help.getActiveSignature(), equalTo(1));
assertThat(help.getActiveParameter(), equalTo(1));
}
项目:vscode-javac
文件:SignatureHelpTest.java
@Test
public void constructor() throws IOException {
SignatureHelp help = doHelp("/org/javacs/example/SignatureHelp.java", 9, 27);
assertThat(help.getSignatures(), hasSize(1));
assertThat(help.getSignatures().get(0).getLabel(), startsWith("SignatureHelp"));
}
项目:vscode-javac
文件:SignatureHelpTest.java
@Test
public void platformConstructor() throws IOException {
SignatureHelp help = doHelp("/org/javacs/example/SignatureHelp.java", 10, 26);
assertThat(help.getSignatures(), not(empty()));
assertThat(help.getSignatures().get(0).getLabel(), startsWith("ArrayList"));
assertThat(help.getSignatures().get(0).getDocumentation(), not(nullValue()));
}
项目:eclipse.jdt.ls
文件:SignatureHelpHandler.java
public SignatureHelp signatureHelp(TextDocumentPositionParams position, IProgressMonitor monitor) {
SignatureHelp help = new SignatureHelp();
if (!preferenceManager.getPreferences(null).isSignatureHelpEnabled()) {
return help;
}
try {
ICompilationUnit unit = JDTUtils.resolveCompilationUnit(position.getTextDocument().getUri());
final int offset = JsonRpcHelpers.toOffset(unit.getBuffer(), position.getPosition().getLine(), position.getPosition().getCharacter());
int[] contextInfomation = getContextInfomation(unit.getBuffer(), offset);
if (contextInfomation[0] == -1) {
return help;
}
SignatureHelpRequestor collector = new SignatureHelpRequestor(unit, contextInfomation[0] + 1);
if (offset > -1 && !monitor.isCanceled()) {
unit.codeComplete(contextInfomation[0] + 1, collector, monitor);
help = collector.getSignatureHelp(monitor);
if (help != null) {
int currentParameter = contextInfomation[1];
List<SignatureInformation> infos = help.getSignatures();
for (int i = 0; i < infos.size(); i++) {
if (infos.get(i).getParameters().size() >= currentParameter + 1) {
help.setActiveSignature(i);
help.setActiveParameter(currentParameter);
break;
}
}
}
}
} catch (CoreException ex) {
JavaLanguageServerPlugin.logException("Find signatureHelp failure ", ex);
}
return help;
}
项目:eclipse.jdt.ls
文件:SignatureHelpHandlerTest.java
@Test
public void testSignatureHelp_binary() throws JavaModelException {
IPackageFragment pack1 = sourceFolder.createPackageFragment("test1", false, null);
StringBuilder buf = new StringBuilder();
buf.append("package test1;\n");
buf.append("public class E {\n");
buf.append(" public int bar(String s) { System.out.println( }\n");
buf.append("}\n");
ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);
SignatureHelp help = getSignatureHelp(cu, 2, 50);
assertNotNull(help);
assertTrue(help.getSignatures().size() >= 10);
assertTrue(help.getSignatures().get(help.getActiveSignature()).getLabel().matches("println\\(\\w+ \\w+\\) : void"));
}
项目:xtext-core
文件:SignatureHelpServiceImpl.java
@Override
public SignatureHelp getSignatureHelp(final XtextResource resource, final int offset) {
Preconditions.<XtextResource>checkNotNull(resource, "resource");
Preconditions.checkArgument((offset >= 0), ("offset >= 0. Was: " + Integer.valueOf(offset)));
final EObject object = this.offsetHelper.resolveContainedElementAt(resource, offset);
if ((object instanceof OperationCall)) {
final String operationName = this.getOperationName(((OperationCall)object));
boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(operationName);
boolean _not = (!_isNullOrEmpty);
if (_not) {
return this.getSignatureHelp(((OperationCall)object), operationName, offset);
}
}
return ISignatureHelpService.EMPTY;
}
项目:xtext-core
文件:AbstractLanguageServerTest.java
protected String _toExpectation(final SignatureHelp it) {
String _xblockexpression = null;
{
int _size = it.getSignatures().size();
boolean _tripleEquals = (_size == 0);
if (_tripleEquals) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Signature index is expected to be null when no signatures are available. Was: ");
Integer _activeSignature = it.getActiveSignature();
_builder.append(_activeSignature);
_builder.append(".");
Assert.assertNull(_builder.toString(),
it.getActiveSignature());
return "<empty>";
}
Assert.assertNotNull("Active signature index must not be null when signatures are available.", it.getActiveSignature());
String _xifexpression = null;
Integer _activeParameter = it.getActiveParameter();
boolean _tripleEquals_1 = (_activeParameter == null);
if (_tripleEquals_1) {
_xifexpression = "<empty>";
} else {
_xifexpression = it.getSignatures().get((it.getActiveSignature()).intValue()).getParameters().get(
(it.getActiveParameter()).intValue()).getLabel();
}
final String param = _xifexpression;
StringConcatenation _builder_1 = new StringConcatenation();
final Function1<SignatureInformation, String> _function = (SignatureInformation it_1) -> {
return it_1.getLabel();
};
String _join = IterableExtensions.join(ListExtensions.<SignatureInformation, String>map(it.getSignatures(), _function), " | ");
_builder_1.append(_join);
_builder_1.append(" | ");
_builder_1.append(param);
_xblockexpression = _builder_1.toString();
}
return _xblockexpression;
}
项目:camel-language-server
文件:CamelTextDocumentService.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position) {
LOGGER.info("signatureHelp: " + position.getTextDocument());
return CompletableFuture.completedFuture(null);
}
项目:vscode-javac
文件:Signatures.java
static Optional<SignatureHelp> help(
FocusedResult compiled, int line, int column, Javadocs docs) {
long offset = compiled.compilationUnit.getLineMap().getPosition(line, column);
return compiled.cursor.flatMap(c -> new Signatures(c, offset, compiled.task, docs).get());
}
项目:vscode-javac
文件:SignatureHelpTest.java
@Test
public void signatureHelp() throws IOException {
SignatureHelp help = doHelp("/org/javacs/example/SignatureHelp.java", 7, 36);
assertThat(help.getSignatures(), hasSize(2));
}
项目:SOMns-vscode
文件:SomLanguageServer.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(
final TextDocumentPositionParams position) {
// TODO Auto-generated method stub
return null;
}
项目:eclipse.jdt.ls
文件:JDTLanguageServer.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position) {
logInfo(">> document/signatureHelp");
SignatureHelpHandler handler = new SignatureHelpHandler(preferenceManager);
return computeAsync((cc) -> handler.signatureHelp(position, toMonitor(cc)));
}
项目:eclipse.jdt.ls
文件:SignatureHelpHandlerTest.java
private SignatureHelp getSignatureHelp(ICompilationUnit cu, int line, int character) {
String payload = createSignatureHelpRequest(cu, line, character);
TextDocumentPositionParams position = getParams(payload);
return handler.signatureHelp(position, monitor);
}
项目:xtext-core
文件:SignatureHelpServiceImpl.java
@Override
public SignatureHelp getSignatureHelp(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator) {
final int offset = document.getOffSet(params.getPosition());
return this.getSignatureHelp(resource, offset);
}
项目:xtext-core
文件:SignatureHelpConfiguration.java
@Pure
public Procedure1<? super SignatureHelp> getAssertSignatureHelp() {
return this.assertSignatureHelp;
}
项目:xtext-core
文件:SignatureHelpConfiguration.java
public void setAssertSignatureHelp(final Procedure1<? super SignatureHelp> assertSignatureHelp) {
this.assertSignatureHelp = assertSignatureHelp;
}
项目:xtext-core
文件:ISignatureHelpService.java
@Override
public SignatureHelp getSignatureHelp(final XtextResource resource, final int offset) {
return EMPTY;
}
项目:xtext-core
文件:ISignatureHelpService.java
@Override
public SignatureHelp getSignatureHelp(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator) {
return EMPTY;
}
项目:lsp4j
文件:MockLanguageServer.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position) {
throw new UnsupportedOperationException();
}
项目:che
文件:MavenTextDocumentService.java
@Override
public CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position) {
return null;
}
项目:xtext-core
文件:AbstractLanguageServerTest.java
protected String toExpectation(final Object it) {
if (it instanceof Integer) {
return _toExpectation((Integer)it);
} else if (it instanceof List) {
return _toExpectation((List<?>)it);
} else if (it instanceof DocumentHighlightKind) {
return _toExpectation((DocumentHighlightKind)it);
} else if (it instanceof String) {
return _toExpectation((String)it);
} else if (it == null) {
return _toExpectation((Void)null);
} else if (it instanceof Map) {
return _toExpectation((Map<Object, Object>)it);
} else if (it instanceof CodeLens) {
return _toExpectation((CodeLens)it);
} else if (it instanceof ColoringInformation) {
return _toExpectation((ColoringInformation)it);
} else if (it instanceof Command) {
return _toExpectation((Command)it);
} else if (it instanceof CompletionItem) {
return _toExpectation((CompletionItem)it);
} else if (it instanceof DocumentHighlight) {
return _toExpectation((DocumentHighlight)it);
} else if (it instanceof Hover) {
return _toExpectation((Hover)it);
} else if (it instanceof Location) {
return _toExpectation((Location)it);
} else if (it instanceof Position) {
return _toExpectation((Position)it);
} else if (it instanceof Range) {
return _toExpectation((Range)it);
} else if (it instanceof SignatureHelp) {
return _toExpectation((SignatureHelp)it);
} else if (it instanceof SymbolInformation) {
return _toExpectation((SymbolInformation)it);
} else if (it instanceof TextEdit) {
return _toExpectation((TextEdit)it);
} else if (it instanceof WorkspaceEdit) {
return _toExpectation((WorkspaceEdit)it);
} else if (it instanceof Either) {
return _toExpectation((Either<?, ?>)it);
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(it).toString());
}
}
项目:SOMns-vscode
文件:TextDocumentService.java
/**
* The signature help request is sent from the client to the server to
* request signature information at a given cursor position.
*
* Registration Options: SignatureHelpRegistrationOptions
*/
@JsonRequest
CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position);
项目:xtext-core
文件:ISignatureHelpService.java
/**
* Returns with a {@link SignatureHelp signature help} instance for a
* resource at a given offset. This method never returns with {@code null}.
*
* @param resource
* the resource to extract the help for a method/operation
* signature.
* @param offset
* the offset of the cursor in the resource.
*
* @return a signature help instance.
*/
@Deprecated
SignatureHelp getSignatureHelp(final XtextResource resource, final int offset);
项目:lsp4j
文件:TextDocumentService.java
/**
* The signature help request is sent from the client to the server to
* request signature information at a given cursor position.
*
* Registration Options: SignatureHelpRegistrationOptions
*/
@JsonRequest
CompletableFuture<SignatureHelp> signatureHelp(TextDocumentPositionParams position);
项目:che
文件:TextDocumentServiceClient.java
/**
* GWT client implementation of {@link
* TextDocumentService#signatureHelp(TextDocumentPositionParams)}
*
* @param params
* @return
*/
public Promise<SignatureHelp> signatureHelp(TextDocumentPositionParams params) {
return transmitDtoAndReceiveDto(params, "textDocument/signatureHelp", SignatureHelp.class);
}
项目:xtext-core
文件:ISignatureHelpService.java
SignatureHelp getSignatureHelp(Document document, XtextResource resource, TextDocumentPositionParams params, CancelIndicator cancelIndicator);