2016-09-26 106 views
0

我正在使用MultiLineCommentDocumentationProvider來允許JavaDoc-like註釋實體(使用/ ** * /)。Xtext:使用@annotations創建「JavaDoc」註釋

但是,如果我對某些參數使用@(註解),它不會像Java那樣變得粗體,甚至在鼠標懸停時也不會斷線。

有沒有一種方法可以使用擴展Xtext的MultiLineCommentDocumentationProvider來支持上述?

/** some description 
@myParam param description */ 
someEntity(Param myParam) {..} 

應該看時鼠標懸停在someEntity等(或在某些參照它):

一些描述

myParam: PARAM描述

相反(現在看起來像):

一些說明@myparam參數說明

在此先感謝。

回答

0

隨着基督教的建議下,我改變了 '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 
    } 
1

這不是MultiLineCommentDocumentationProvider的默認功能。你可以使用XbaseHoverDocumentationProvider/XbaseHoverProvider或至少讓你啓發它。