2016-09-26 3 views
0

Ich benutze MultiLineCommentDocumentationProvider, um JavaDoc-ähnliche Kommentare für Entitäten zu erlauben (mit/** * /).Xtext: Erstellen von "JavaDoc" -Kommentaren mit @annotations

Allerdings, wenn ich @ (Annotation) für einen Parameter verwende, wird es nicht fett wie in Java und bricht nicht einmal die Zeile, wenn die Maus schwebt.

Kann ich den MultiLineCommentDocumentationProvider von extend Xtext zur Unterstützung des oben genannten verwenden?

Beispiel

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

sollte wie folgt aussehen, wenn die Maus auf someEntity schwebt (oder auf einem Verweis darauf):

einige Beschreibung

myParam: param Beschreibung

Statt von (zur Zeit sieht es so aus):

einige Beschreibung @myparam param Beschreibung

Vielen Dank im Voraus.

Antwort

0

Rat des Christian Folgen, änderte ich 'MyDSLMultiLineCommentDocumentationProvider' auf diese Weise:

@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

Dies ist keine Standardfunktion von MultiLineCommentDocumentationProvider. Sie können XbaseHoverDocumentationProvider/XbaseHoverProvider verwenden oder zumindest lassen Sie sich davon inspirieren.

Verwandte Themen