Xtext:使用@annotations 创建 "JavaDoc" 评论
Xtext: Creating "JavaDoc" comments with @annotations
我正在使用 MultiLineCommentDocumentationProvider 来允许对实体进行 Java 类似 Doc 的注释(使用 /** */)。
但是,如果我对某些参数使用 @(注释),它不会像 Java 那样变得粗体,甚至在鼠标悬停时也不会换行。
有没有一种方法可以使用扩展 Xtext 的 MultiLineCommentDocumentationProvider 来支持上述内容?
例子
/** some description
@myParam param description */
someEntity(Param myParam) {..}
当鼠标悬停在 someEntity(或对它的某些引用)上时应该看起来像:
一些描述
myParam: 参数说明
而不是(目前看起来像):
一些描述@myparam参数描述
提前致谢。
这不是 MultiLineCommentDocumentationProvider
的默认功能。你可以使用 XbaseHoverDocumentationProvider
/XbaseHoverProvider
或者至少让你从中得到启发。
听从 Christian 的建议,我 'MyDSLMultiLineCommentDocumentationProvider' 改成了这样:
@Override
public String getDocumentation(EObject o) {
String returnValue = findComment(o);
String returnValueWithAnnotations = getAnnotatedDocumentation(returnValue);
return getTextFromMultilineComment(returnValueWithAnnotations);
}
private String getAnnotatedDocumentation(String returnValue) {
boolean isFirstAnnotationFound = false;
StringBuilder result = new StringBuilder("");
String[] splitted = returnValue.trim().split(" +");
for (int i = 0; i < splitted.length; i++)
{
if (splitted[i].charAt(0) == '@')
{
if (! isFirstAnnotationFound)
{
result.append("<br><b>Parameters:</b>");
isFirstAnnotationFound = true;
}
result.append("<br>"); //new line
result.append("<b>"); //bold
result.append(splitted[i].substring(1) + " "); // do not include "@"
result.append("</b>");
}
else
{
result.append(splitted[i] + " ");
}
}
String resultString = result.toString();
return resultString.substring(0, resultString.length()-1); // getting rid of the strange "/" in the end
}
我正在使用 MultiLineCommentDocumentationProvider 来允许对实体进行 Java 类似 Doc 的注释(使用 /** */)。
但是,如果我对某些参数使用 @(注释),它不会像 Java 那样变得粗体,甚至在鼠标悬停时也不会换行。
有没有一种方法可以使用扩展 Xtext 的 MultiLineCommentDocumentationProvider 来支持上述内容?
例子
/** some description
@myParam param description */
someEntity(Param myParam) {..}
当鼠标悬停在 someEntity(或对它的某些引用)上时应该看起来像:
一些描述
myParam: 参数说明
而不是(目前看起来像):
一些描述@myparam参数描述
提前致谢。
这不是 MultiLineCommentDocumentationProvider
的默认功能。你可以使用 XbaseHoverDocumentationProvider
/XbaseHoverProvider
或者至少让你从中得到启发。
听从 Christian 的建议,我 'MyDSLMultiLineCommentDocumentationProvider' 改成了这样:
@Override
public String getDocumentation(EObject o) {
String returnValue = findComment(o);
String returnValueWithAnnotations = getAnnotatedDocumentation(returnValue);
return getTextFromMultilineComment(returnValueWithAnnotations);
}
private String getAnnotatedDocumentation(String returnValue) {
boolean isFirstAnnotationFound = false;
StringBuilder result = new StringBuilder("");
String[] splitted = returnValue.trim().split(" +");
for (int i = 0; i < splitted.length; i++)
{
if (splitted[i].charAt(0) == '@')
{
if (! isFirstAnnotationFound)
{
result.append("<br><b>Parameters:</b>");
isFirstAnnotationFound = true;
}
result.append("<br>"); //new line
result.append("<b>"); //bold
result.append(splitted[i].substring(1) + " "); // do not include "@"
result.append("</b>");
}
else
{
result.append(splitted[i] + " ");
}
}
String resultString = result.toString();
return resultString.substring(0, resultString.length()-1); // getting rid of the strange "/" in the end
}