aspect JastAddJHoverComments { refine HoverComments eq ASTNode.hoverComment() { ASTNode node = this; while(node != null && !(node instanceof CompilationUnit)) node = node.getParent(); if(node == null) return "[" + ASTNode.getLine(getStart()) + "," + ASTNode.getColumn(getStart()) + "->" + ASTNode.getLine(getEnd()) + "," + ASTNode.getColumn(getEnd()) + "]"; CompilationUnit cu = (CompilationUnit)node; int startOffset = cu.offset(ASTNode.getLine(getStart()), ASTNode.getColumn(getStart())); return startOffset + "[" + ASTNode.getLine(getStart()) + "," + ASTNode.getColumn(getStart()) + "->" + ASTNode.getLine(getEnd()) + "," + ASTNode.getColumn(getEnd()) + "]"; } eq MethodDecl.hoverComment() { StringBuffer res = new StringBuffer(type().typeName()); res.append(" " + name() + "("); for (int i = 0; i < getNumParameter(); i++) { res.append(getParameter(i).type().typeName()); if (i != 0) { res.append(","); } } res.append(")"); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq ConstructorDecl.hoverComment() { StringBuffer res = new StringBuffer(name() + "("); for (int i = 0; i < getNumParameter(); i++) { res.append(getParameter(i).type().typeName()); if (i != 0) { res.append(","); } } res.append(")"); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq FieldDeclaration.hoverComment() { StringBuffer res = new StringBuffer(type().typeName()); res.append(" " + name()); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq VariableDeclaration.hoverComment() { StringBuffer res = new StringBuffer(type().typeName()); res.append(" " + name()); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq ParameterDeclaration.hoverComment() { StringBuffer res = new StringBuffer(type().typeName()); res.append(" " + name()); return res.toString(); } eq ClassDecl.hoverComment() { StringBuffer res = new StringBuffer(typeName()); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq InterfaceDecl.hoverComment() { StringBuffer res = new StringBuffer(typeName()); String javaDoc = javaDocComment(); if (javaDoc != null) res.append("\n\n" + javaDoc); return res.toString(); } eq MethodAccess.hoverComment() = decl().hoverComment(); eq TypeAccess.hoverComment() = decl().hoverComment(); eq TypeDecl.hoverComment() = typeName(); eq VarAccess.hoverComment() = ((ASTNode)decl()).hoverComment(); }