类org.eclipse.lsp4j.Hover源码实例Demo

下面列出了怎么用org.eclipse.lsp4j.Hover的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: intellij-quarkus   文件: GradleJavaHoverTest.java
@Test
public void testConfigPropertyNameYaml() throws Exception {
	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_YAML_FILE,
			"greeting:\n" + "  message: message from yaml\n" + "  number: 2001", javaProject);

	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_PROPERTIES_FILE,
			"greeting.message = hello\r\n" + "greeting.name = quarkus\r\n" + "greeting.number = 100", javaProject);

	// Position(14, 40) is the character after the | symbol:
	// @ConfigProperty(name = "greeting.mes|sage")
	Hover info = getActualHover(new Position(14, 40));
	MicroProfileAssert.assertHover("greeting.message", "message from yaml", 14, 28, 44, info);

	// Position(26, 33) is the character after the | symbol:
	// @ConfigProperty(name = "greet|ing.number", defaultValue="0")
	info = getActualHover(new Position(26, 33));
	MicroProfileAssert.assertHover("greeting.number", "2001", 26, 28, 43, info);

	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_YAML_FILE, "greeting:\n" + "  message: message from yaml",
			javaProject);

	// fallback to application.properties
	info = getActualHover(new Position(26, 33));
	MicroProfileAssert.assertHover("greeting.number", "100", 26, 28, 43, info);
}
 
源代码2 项目: intellij-quarkus   文件: MavenJavaHoverTest.java
@Test
public void testConfigPropertyNameYaml() throws Exception {
	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_YAML_FILE,
			"greeting:\n" + "  message: message from yaml\n" + "  number: 2001", javaProject);

	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_PROPERTIES_FILE,
			"greeting.message = hello\r\n" + "greeting.name = quarkus\r\n" + "greeting.number = 100", javaProject);

	// Position(14, 40) is the character after the | symbol:
	// @ConfigProperty(name = "greeting.mes|sage")
	Hover info = getActualHover(new Position(14, 40));
	MicroProfileAssert.assertHover("greeting.message", "message from yaml", 14, 28, 44, info);

	// Position(26, 33) is the character after the | symbol:
	// @ConfigProperty(name = "greet|ing.number", defaultValue="0")
	info = getActualHover(new Position(26, 33));
	MicroProfileAssert.assertHover("greeting.number", "2001", 26, 28, 43, info);

	MicroProfileAssert.saveFile(PsiMicroProfileProject.APPLICATION_YAML_FILE, "greeting:\n" + "  message: message from yaml",
			javaProject);

	// fallback to application.properties
	info = getActualHover(new Position(26, 33));
	MicroProfileAssert.assertHover("greeting.number", "100", 26, 28, 43, info);
}
 
源代码3 项目: lemminx   文件: MarkupContentFactory.java
/**
 * Create the hover from the given markup content list and range.
 * 
 * @param values       the list of documentation values
 * @param defaultRange the default range.
 * @return the hover from the given markup content list and range.
 */
public static Hover createHover(List<MarkupContent> values, Range defaultRange) {
	if (values.isEmpty()) {
		return null;
	}
	if (values.size() == 1) {
		return new Hover(values.get(0), defaultRange);
	}
	// Markup kind
	boolean hasMarkdown = values.stream() //
			.anyMatch(contents -> MarkupKind.MARKDOWN.equals(contents.getKind()));
	String markupKind = hasMarkdown ? MarkupKind.MARKDOWN : MarkupKind.PLAINTEXT;
	// Contents
	String content = createContent(values, markupKind);
	// Range
	Range range = defaultRange;
	return new Hover(new MarkupContent(markupKind, content), range);
}
 
源代码4 项目: lemminx   文件: XMLHover.java
/**
 * Returns the LSP hover from the hovered element.
 * 
 * @param hoverRequest the hover request.
 * @param tagRange     the tag range
 * @param open         true if it's the start tag which is hovered and false if
 *                     it's the end tag.
 * @return the LSP hover from the hovered element.
 */
private Hover getTagHover(HoverRequest hoverRequest, Range tagRange, boolean open) {
	hoverRequest.setHoverRange(tagRange);
	hoverRequest.setOpen(open);
	List<Hover> hovers = new ArrayList<>();
	for (IHoverParticipant participant : extensionsRegistry.getHoverParticipants()) {
		try {
			Hover hover = participant.onTag(hoverRequest);
			if (hover != null) {
				hovers.add(hover);
			}
		} catch (Exception e) {
			LOGGER.log(Level.SEVERE, "While performing IHoverParticipant#onTag", e);
		}
	}
	return mergeHover(hovers, tagRange);
}
 
源代码5 项目: lemminx   文件: XMLHover.java
/**
 * Returns the LSP hover from the hovered attribute.
 * 
 * @param hoverRequest the hover request.
 * @param attrRange    the attribute range
 * @return the LSP hover from the hovered attribute.
 */
private Hover getAttrNameHover(HoverRequest hoverRequest, Range attrRange) {
	hoverRequest.setHoverRange(attrRange);
	List<Hover> hovers = new ArrayList<>();
	for (IHoverParticipant participant : extensionsRegistry.getHoverParticipants()) {
		try {
			Hover hover = participant.onAttributeName(hoverRequest);
			if (hover != null) {
				hovers.add(hover);
			}
		} catch (Exception e) {
			LOGGER.log(Level.SEVERE, "While performing IHoverParticipant#onAttributeName", e);
		}
	}
	return mergeHover(hovers, attrRange);
}
 
源代码6 项目: lemminx   文件: XMLHover.java
/**
 * Returns the LSP hover from the hovered attribute.
 * 
 * @param hoverRequest the hover request.
 * @param attrRange    the attribute range
 * @return the LSP hover from the hovered attribute.
 */
private Hover getAttrValueHover(HoverRequest hoverRequest, Range attrRange) {
	hoverRequest.setHoverRange(attrRange);
	List<Hover> hovers = new ArrayList<>();
	for (IHoverParticipant participant : extensionsRegistry.getHoverParticipants()) {
		try {
			Hover hover = participant.onAttributeValue(hoverRequest);
			if (hover != null) {
				hovers.add(hover);
			}
		} catch (Exception e) {
			LOGGER.log(Level.SEVERE, "While performing IHoverParticipant#onAttributeValue", e);
		}
	}
	return mergeHover(hovers, attrRange);
}
 
源代码7 项目: lemminx   文件: XMLHover.java
/**
 * Returns the LSP hover from the hovered text.
 * 
 * @param hoverRequest the hover request.
 * @param attrRange    the attribute range
 * @return the LSP hover from the hovered text.
 */
private Hover getTextHover(HoverRequest hoverRequest, Range textRange) {
	hoverRequest.setHoverRange(textRange);
	List<Hover> hovers = new ArrayList<>();
	for (IHoverParticipant participant : extensionsRegistry.getHoverParticipants()) {
		try {
			Hover hover = participant.onText(hoverRequest);
			if (hover != null) {
				hovers.add(hover);
			}
		} catch (Exception e) {
			LOGGER.log(Level.SEVERE, "While performing IHoverParticipant#onText", e);
		}
	}
	return mergeHover(hovers, textRange);
}
 
源代码8 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testHoverVariable() throws Exception {
	//given
	//Hover on args parameter
	String argParam = createHoverRequest("src/java/Foo.java", 7, 37);
	TextDocumentPositionParams position = getParams(argParam);

	//when
	Hover hover = handler.hover(position, monitor);

	//then
	assertNotNull(hover);
	assertNotNull(hover.getContents());
	MarkedString signature = hover.getContents().getLeft().get(0).getRight();
	assertEquals("Unexpected hover " + signature, "java", signature.getLanguage());
	assertEquals("Unexpected hover " + signature, "String[] args - java.Foo.main(String[])", signature.getValue());
}
 
源代码9 项目: lemminx   文件: EntitiesHoverParticipant.java
@Override
public Hover onText(IHoverRequest request) throws Exception {
	DOMNode node = request.getNode();
	if (!node.isText()) {
		return null;
	}
	// Hover is done in a text node, check if it's a entity reference
	DOMDocument document = request.getXMLDocument();
	int offset = request.getOffset();
	EntityReferenceRange entityRange = XMLPositionUtility.selectEntityReference(offset, document);
	if (entityRange == null) {
		return null;
	}
	// The hovered text follows the entity reference syntax (ex : &amp;)
	String entityName = entityRange.getName();
	Range range = entityRange.getRange();
	// Try to find the entity
	MarkupContent entityContents = searchInEntities(entityName, range, document, request);
	if (entityContents != null) {
		return new Hover(entityContents, range);
	}
	return null;
}
 
源代码10 项目: lemminx   文件: ContentModelHoverParticipant.java
@Override
public Hover onTag(IHoverRequest hoverRequest) throws Exception {
	try {
		ContentModelManager contentModelManager = hoverRequest.getComponent(ContentModelManager.class);
		DOMElement element = (DOMElement) hoverRequest.getNode();
		Collection<CMDocument> cmDocuments = contentModelManager.findCMDocument(element);
		if (cmDocuments.isEmpty()) {
			// no bound grammar -> no documentation
			return null;
		}
		// Compute element declaration documentation from bound grammars
		List<MarkupContent> contentValues = new ArrayList<>();
		for (CMDocument cmDocument : cmDocuments) {
			CMElementDeclaration cmElement = cmDocument.findCMElement(element);
			if (cmElement != null) {
				MarkupContent content = XMLGenerator.createMarkupContent(cmElement, hoverRequest);
				fillHoverContent(content, contentValues);
			}
		}
		return createHover(contentValues);
	} catch (CacheResourceDownloadingException e) {
		return getCacheWarningHover(e, hoverRequest);
	}
}
 
源代码11 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testInvalidJavadoc() throws Exception {
	importProjects("maven/aspose");
	IProject project = null;
	ICompilationUnit unit = null;
	try {
		project = ResourcesPlugin.getWorkspace().getRoot().getProject("aspose");
		IJavaProject javaProject = JavaCore.create(project);
		IType type = javaProject.findType("org.sample.TestJavadoc");
		unit = type.getCompilationUnit();
		unit.becomeWorkingCopy(null);
		String uri = JDTUtils.toURI(unit);
		TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
		TextDocumentPositionParams position = new TextDocumentPositionParams(textDocument, new Position(8, 24));
		Hover hover = handler.hover(position, monitor);
		assertNotNull(hover);
		assertNotNull(hover.getContents());
		assertEquals(1, hover.getContents().getLeft().size());
		assertEquals("com.aspose.words.Document.Document(String fileName) throws Exception", hover.getContents().getLeft().get(0).getRight().getValue());
	} finally {
		if (unit != null) {
			unit.discardWorkingCopy();
		}
	}
}
 
源代码12 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testHoverOnJavadocWithLinkToMethodInClass() throws Exception {
	importProjects("maven/salut");
	project = WorkspaceHelper.getProject("salut");
	handler = new HoverHandler(preferenceManager);
	//given
	String payload = createHoverRequest("src/main/java/java/Foo2.java", 18, 25);
	TextDocumentPositionParams position = getParams(payload);

	// when
	Hover hover = handler.hover(position, monitor);
	assertNotNull("Hover is null", hover);
	assertEquals("Unexpected hover contents:\n" + hover.getContents(), 2, hover.getContents().getLeft().size());
	Either<String, MarkedString> javadoc = hover.getContents().getLeft().get(1);
	String content = null;
	assertTrue("javadoc has null content", javadoc != null && javadoc.getLeft() != null && (content = javadoc.getLeft()) != null);
	assertMatches("\\[newMethodBeingLinkedToo\\]\\(file:/.*/salut/src/main/java/java/Foo2.java#23\\)", content);
}
 
源代码13 项目: camel-language-server   文件: HoverProcessor.java
public CompletableFuture<Hover> getHover(Position position) {
	try {
		ParserFileHelper parserFileHelper = new ParserFileHelperFactory().getCorrespondingParserFileHelper(textDocumentItem, position.getLine());
		if (parserFileHelper != null){
			String camelComponentUri = parserFileHelper.getCamelComponentUri(textDocumentItem, position);
			String componentName = StringUtils.asComponentName(camelComponentUri);
			if (componentName != null) {
				CamelURIInstance camelURIInstance = parserFileHelper.createCamelURIInstance(textDocumentItem, position, camelComponentUri);
				int positionInCamelUri = parserFileHelper.getPositionInCamelURI(textDocumentItem, position);
				CamelUriElementInstance elem = camelURIInstance.getSpecificElement(positionInCamelUri);
				return camelCatalog.thenApply(new HoverFuture(elem));
			}
		}
	} catch (Exception e) {
		LOGGER.error("Error searching hover", e);
	}
	return CompletableFuture.completedFuture(null);
}
 
源代码14 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testHoverPackage() throws Exception {
	// given
	// Hovers on the java.internal package
	String payload = createHoverRequest("src/java/Baz.java", 2, 16);
	TextDocumentPositionParams position = getParams(payload);

	// when
	Hover hover = handler.hover(position, monitor);

	// then
	assertNotNull(hover);
	String signature = hover.getContents().getLeft().get(0).getRight().getValue();//
	assertEquals("Unexpected signature ", "java.internal", signature);
	String result = hover.getContents().getLeft().get(1).getLeft();//
	assertEquals("Unexpected hover ", "this is a **bold** package!", result);
}
 
源代码15 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testEmptyHover() throws Exception {
	//given
	//Hovers on the System.out
	URI standalone = Paths.get("projects", "maven", "salut", "src", "main", "java", "java", "Foo.java").toUri();
	String payload = createHoverRequest(standalone, 1, 2);
	TextDocumentPositionParams position = getParams(payload);

	//when
	Hover hover = handler.hover(position, monitor);

	//then
	assertNotNull(hover);
	assertNotNull(hover.getContents());
	assertEquals(1, hover.getContents().getLeft().size());
	assertEquals("Should find empty hover for " + payload, "", hover.getContents().getLeft().get(0).getLeft());
}
 
源代码16 项目: syndesis   文件: TeiidDdlTextDocumentService.java
@Override
public CompletableFuture<Hover> hover(TextDocumentPositionParams position) {
    /*
     * LOGGER.debug("hover: {}", position.getTextDocument()); TextDocumentItem
     * textDocumentItem = openedDocuments.get(position.getTextDocument().getUri());
     * String htmlContent = new
     * HoverProcessor(textDocumentItem).getHover(position.getPosition()); Hover
     * hover = new Hover();
     * hover.setContents(Collections.singletonList((Either.forLeft(htmlContent))));
     * LOGGER.debug("hover: {}", position.getTextDocument()); Hover hover = new
     * Hover(); hover.setContents(Collections.singletonList((Either.
     * forLeft("HELLO HOVER WORLD!!!!"))));
     */
    Hover result = null;
    return CompletableFuture.completedFuture(result);
}
 
源代码17 项目: eclipse.jdt.ls   文件: SyntaxServerTest.java
@Test
public void testHover() throws Exception {
	URI fileURI = openFile("maven/salut4", "src/main/java/java/TestJavadoc.java");
	String fileUri = ResourceUtils.fixURI(fileURI);
	TextDocumentIdentifier identifier = new TextDocumentIdentifier(fileUri);
	HoverParams params = new HoverParams(identifier, new Position(8, 23));
	Hover result = server.hover(params).join();
	assertNotNull(result);
	assertNotNull(result.getContents());
	assertTrue(result.getContents().isLeft());
	List<Either<String, MarkedString>> list = result.getContents().getLeft();
	assertNotNull(list);
	assertEquals(2, list.size());
	assertTrue(list.get(1).isLeft());
	assertEquals("Test", list.get(1).getLeft());
}
 
源代码18 项目: eclipse.jdt.ls   文件: SyntaxServerTest.java
@Test
public void testHoverUnresolvedType() throws Exception {
	URI fileURI = openFile("maven/salut4", "src/main/java/java/Foo.java");
	String fileUri = ResourceUtils.fixURI(fileURI);
	TextDocumentIdentifier identifier = new TextDocumentIdentifier(fileUri);
	HoverParams params = new HoverParams(identifier, new Position(7, 30));
	Hover result = server.hover(params).join();
	assertNotNull(result);
	assertNotNull(result.getContents());
	assertTrue(result.getContents().isLeft());
	List<Either<String, MarkedString>> list = result.getContents().getLeft();
	assertNotNull(list);
	assertEquals(2, list.size());
	assertTrue(list.get(1).isLeft());
	assertEquals("This is interface IFoo.", list.get(1).getLeft());
}
 
源代码19 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testHoverOnPackageWithJavadoc() throws Exception {
	importProjects("maven/salut2");
	project = WorkspaceHelper.getProject("salut2");
	handler = new HoverHandler(preferenceManager);
	//given
	//Hovers on the org.apache.commons import
	String payload = createHoverRequest("src/main/java/foo/Bar.java", 2, 22);
	TextDocumentPositionParams position = getParams(payload);

	//when
	Hover hover = handler.hover(position, monitor);
	assertNotNull(hover);
	String result = hover.getContents().getLeft().get(0).getRight().getValue();//
	assertEquals("Unexpected hover ", "org.apache.commons", result);

	assertEquals(logListener.getErrors().toString(), 0, logListener.getErrors().size());
}
 
源代码20 项目: groovy-language-server   文件: GroovyServices.java
@Override
public CompletableFuture<Hover> hover(TextDocumentPositionParams params) {
	URI uri = URI.create(params.getTextDocument().getUri());
	recompileIfContextChanged(uri);

	HoverProvider provider = new HoverProvider(astVisitor);
	return provider.provideHover(params.getTextDocument(), params.getPosition());
}
 
源代码21 项目: xtext-core   文件: LanguageServerImpl.java
/**
 * Compute the hover. Executed in a read request.
 * @since 2.20
 */
protected Hover hover(HoverParams params, CancelIndicator cancelIndicator) {
	URI uri = getURI(params);
	IHoverService hoverService = getService(uri, IHoverService.class);
	if (hoverService == null) {
		return IHoverService.EMPTY_HOVER;
	}
	return workspaceManager.<Hover>doRead(uri,
			(document, resource) -> hoverService.hover(document, resource, params, cancelIndicator));
}
 
源代码22 项目: intellij-quarkus   文件: LSPTextHover.java
protected static @Nullable String getHoverString(Hover hover) {
    Either<List<Either<String, MarkedString>>, MarkupContent> hoverContent = hover.getContents();
    if (hoverContent.isLeft()) {
        List<Either<String, MarkedString>> contents = hoverContent.getLeft();
        if (contents == null || contents.isEmpty()) {
            return null;
        }
        return contents.stream().map(content -> {
            if (content.isLeft()) {
                return content.getLeft();
            } else if (content.isRight()) {
                MarkedString markedString = content.getRight();
                // TODO this won't work fully until markup parser will support syntax
                // highlighting but will help display
                // strings with language tags, e.g. without it things after <?php tag aren't
                // displayed
                if (markedString.getLanguage() != null && !markedString.getLanguage().isEmpty()) {
                    return String.format("```%s%n%s%n```", markedString.getLanguage(), markedString.getValue()); //$NON-NLS-1$
                } else {
                    return markedString.getValue();
                }
            } else {
                return ""; //$NON-NLS-1$
            }
        }).filter(((Predicate<String>) String::isEmpty).negate()).collect(Collectors.joining("\n\n")); //$NON-NLS-1$ )
    } else {
        return hoverContent.getRight().getValue();
    }
}
 
private void collectHover(String uri, PsiFile typeRoot, PsiElement hoverElement, IPsiUtils utils,
                          Position hoverPosition, DocumentFormat documentFormat, List<Hover> hovers) {
    try {
        VirtualFile file = utils.findFile(uri);
        if (file != null) {
            Module module = utils.getModule(file);
            if (module != null) {
                // Collect all adapted hover participant
                JavaHoverContext context = new JavaHoverContext(uri, typeRoot, utils, module, hoverElement, hoverPosition,
                        documentFormat);
                List<IJavaHoverParticipant> definitions = IJavaHoverParticipant.EP_NAME.extensions()
                        .filter(definition -> definition.isAdaptedForHover(context)).collect(Collectors.toList());
                if (definitions.isEmpty()) {
                    return;
                }

                // Begin, collect, end participants
                definitions.forEach(definition -> definition.beginHover(context));
                definitions.forEach(definition -> {
                    Hover hover = definition.collectHover(context);
                    if (hover != null) {
                        hovers.add(hover);
                    }
                });
                definitions.forEach(definition -> definition.endHover(context));
            }
        }
    } catch (IOException e) {
        LOGGER.error(e.getLocalizedMessage(), e);
    }
}
 
源代码24 项目: intellij-quarkus   文件: GradleJavaHoverTest.java
private Hover getActualHover(Position hoverPosition) {
	MicroProfileJavaHoverParams params = new MicroProfileJavaHoverParams();
	params.setDocumentFormat(DocumentFormat.Markdown);
	params.setPosition(hoverPosition);
	params.setUri(javaFileUri);

	return PropertiesManagerForJava.getInstance().hover(params, PsiUtilsImpl.getInstance());
}
 
源代码25 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testHoverUnresolvedType() throws Exception {
	importProjects("eclipse/unresolvedtype");
	project = WorkspaceHelper.getProject("unresolvedtype");
	handler = new HoverHandler(preferenceManager);
	//given
	//Hovers on the IFoo
	String payload = createHoverRequest("src/pckg/Foo.java", 2, 31);
	TextDocumentPositionParams position = getParams(payload);

	// when
	Hover hover = handler.hover(position, monitor);
	assertNotNull(hover);
	assertTrue("Unexpected hover ", hover.getContents().getLeft().isEmpty());
}
 
源代码26 项目: eclipse.jdt.ls   文件: HoverHandlerTest.java
@Test
public void testMissingUnit() throws Exception {
	URI uri = Paths.get("projects", "maven", "salut", "src", "main", "java", "java", "Missing.java").toUri();
	String payload = createHoverRequest(uri, 0, 0);
	TextDocumentPositionParams position = getParams(payload);

	//when
	Hover hover = handler.hover(position, monitor);

	//then
	assertNotNull(hover);
	assertNotNull(hover.getContents());
	assertEquals(1, hover.getContents().getLeft().size());
	assertEquals("Should find empty hover for " + payload, "", hover.getContents().getLeft().get(0).getLeft());
}
 
源代码27 项目: intellij-quarkus   文件: MicroProfileAssert.java
public static void assertHover(String expectedKey, String expectedValue, int expectedLine, int expectedStartOffset,
							   int expectedEndOffset, Hover actualInfo) {
	Assert.assertNotNull(actualInfo);

	Position expectedStart = new Position(expectedLine, expectedStartOffset);
	Position expectedEnd = new Position(expectedLine, expectedEndOffset);
	Range expectedRange = new Range(expectedStart, expectedEnd);

	MarkupContent expectedContent = MicroProfileConfigHoverParticipant.getDocumentation(expectedKey, expectedValue,
			DocumentFormat.Markdown, true);

	Assert.assertEquals(expectedContent, actualInfo.getContents().getRight());
	Assert.assertEquals(expectedRange, actualInfo.getRange());
}
 
源代码28 项目: lsp4j   文件: HoverTypeAdapter.java
public void write(final JsonWriter out, final Hover value) throws IOException {
  if (value == null) {
  	out.nullValue();
  	return;
  }
  
  out.beginObject();
  out.name("contents");
  writeContents(out, value.getContents());
  out.name("range");
  writeRange(out, value.getRange());
  out.endObject();
}
 
源代码29 项目: xtext-core   文件: HoverService.java
protected Hover hover(HoverContext context) {
	if (context == null) {
		return IHoverService.EMPTY_HOVER;
	}
	MarkupContent contents = getMarkupContent(context);
	if (contents == null) {
		return IHoverService.EMPTY_HOVER;
	}
	Range range = getRange(context);
	if (range == null) {
		return IHoverService.EMPTY_HOVER;
	}
	return new Hover(contents, range);
}
 
源代码30 项目: lemminx   文件: XSISchemaModel.java
public static Hover computeHoverResponse(DOMAttr attribute, IHoverRequest request) {

		String name = attribute.getName();
		if(!name.startsWith(request.getXMLDocument().getSchemaInstancePrefix() + ":")) {
			return null;
		}

		DOMDocument document = request.getXMLDocument();
		DOMElement root = document.getDocumentElement();
		String doc = null;
		if(root != null) {
			if(root.equals(document.findNodeAt(attribute.getStart()))) {
				if(name.endsWith(":schemaLocation")) {
					doc = SCHEMA_LOCATION_DOC;
				}
				else if(name.endsWith(":noNamespaceSchemaLocation")) {
					doc = NO_NAMESPACE_SCHEMA_LOCATION_DOC;
				}
			}
		} else {
			return null;
		}
		if(doc == null) {
			if(name.endsWith(":nil")) {
				doc = NIL_DOC;
			}
			else if(name.endsWith(":type")) {
				doc = TYPE_DOC;
			}
			else {
				return null;
			}
		}

		MarkupContent content = new MarkupContent();
		content.setKind(MarkupKind.MARKDOWN);
		content.setValue(doc);
		return new Hover(content);
	}
 
 类所在包
 类方法
 同包方法