Hovers for application properties

This commit is contained in:
BoykoAlex
2016-11-22 20:36:53 -05:00
parent 5c6927ac6f
commit 3bf568b6a2
20 changed files with 1142 additions and 514 deletions

View File

@@ -29,14 +29,29 @@ import reactor.util.function.Tuple2;
public class VscodeHoverEngineAdapter implements VscodeHoverEngine {
public enum HoverType {
MARKDOWN,
HTML
}
private HoverInfoProvider hoverInfoProvider;
private SimpleLanguageServer server;
private HoverType type;
final static Logger logger = LoggerFactory.getLogger(VscodeHoverEngineAdapter.class);
public VscodeHoverEngineAdapter(SimpleLanguageServer server, HoverInfoProvider hoverInfoProvider) {
this(server, hoverInfoProvider, HoverType.MARKDOWN);
}
public VscodeHoverEngineAdapter(SimpleLanguageServer server, HoverInfoProvider hoverInfoProvider, HoverType type) {
this.hoverInfoProvider = hoverInfoProvider;
this.server = server;
this.type = type;
}
public void setHoverType(HoverType type) {
this.type = type;
}
@Override
@@ -56,7 +71,7 @@ public class VscodeHoverEngineAdapter implements VscodeHoverEngine {
IRegion region = hoverTuple.getT2();
Range range = doc.toRange(region.getOffset(), region.getLength());
Hover hover = new Hover(Collections.singletonList(hoverInfo.toMarkdown()), range);
Hover hover = new Hover(Collections.singletonList(render(hoverInfo, type)), range);
return Futures.of(hover);
}
@@ -67,4 +82,15 @@ public class VscodeHoverEngineAdapter implements VscodeHoverEngine {
return SimpleTextDocumentService.NO_HOVER;
}
private static String render(Renderable renderable, HoverType type) {
switch (type) {
case HTML:
return renderable.toHtml();
case MARKDOWN:
return renderable.toMarkdown();
default:
return renderable.toMarkdown();
}
}
}