diff options
-rw-r--r-- | Driver/HTMLDiagnostics.cpp | 2 | ||||
-rw-r--r-- | Driver/HTMLPrint.cpp | 5 | ||||
-rw-r--r-- | include/clang/Rewrite/HTMLRewrite.h | 3 | ||||
-rw-r--r-- | lib/Rewrite/HTMLRewrite.cpp | 20 |
4 files changed, 20 insertions, 10 deletions
diff --git a/Driver/HTMLDiagnostics.cpp b/Driver/HTMLDiagnostics.cpp index 760ef25379..541e49b429 100644 --- a/Driver/HTMLDiagnostics.cpp +++ b/Driver/HTMLDiagnostics.cpp @@ -233,7 +233,7 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D) { // Add CSS, header, and footer. - html::AddHeaderFooterInternalBuiltinCSS(R, FileID); + html::AddHeaderFooterInternalBuiltinCSS(R, FileID, Entry->getName()); // Get the rewrite buffer. const RewriteBuffer *Buf = R.getRewriteBufferFor(FileID); diff --git a/Driver/HTMLPrint.cpp b/Driver/HTMLPrint.cpp index e6e6ab7edf..b06d52df86 100644 --- a/Driver/HTMLPrint.cpp +++ b/Driver/HTMLPrint.cpp @@ -17,6 +17,7 @@ #include "clang/Rewrite/HTMLRewrite.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/SourceManager.h" +#include "clang/Basic/FileManager.h" #include "clang/AST/ASTContext.h" using namespace clang; @@ -59,8 +60,10 @@ HTMLPrinter::~HTMLPrinter() { // Format the file. unsigned FileID = R.getSourceMgr().getMainFileID(); + const FileEntry* Entry = R.getSourceMgr().getFileEntryForID(FileID); + html::AddLineNumbers(R, FileID); - html::AddHeaderFooterInternalBuiltinCSS(R, FileID); + html::AddHeaderFooterInternalBuiltinCSS(R, FileID, Entry->getName()); // If we have a preprocessor, relex the file and syntax highlight. // We might not have a preprocessor if we come from a deserialized AST file, diff --git a/include/clang/Rewrite/HTMLRewrite.h b/include/clang/Rewrite/HTMLRewrite.h index 1ebbade161..dc4d3bf2ab 100644 --- a/include/clang/Rewrite/HTMLRewrite.h +++ b/include/clang/Rewrite/HTMLRewrite.h @@ -62,7 +62,8 @@ namespace html { void AddLineNumbers(Rewriter& R, unsigned FileID); - void AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID); + void AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID, + const char *title = NULL); /// SyntaxHighlight - Relex the specified FileID and annotate the HTML with /// information about keywords, comments, etc. diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp index f17aa537ef..0a32df1c61 100644 --- a/lib/Rewrite/HTMLRewrite.cpp +++ b/lib/Rewrite/HTMLRewrite.cpp @@ -257,7 +257,8 @@ void html::AddLineNumbers(Rewriter& R, unsigned FileID) { RB.InsertTextAfter(FileEnd - FileBeg, "</table>", strlen("</table>")); } -void html::AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID) { +void html::AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID, + const char *title) { const llvm::MemoryBuffer *Buf = R.getSourceMgr().getBuffer(FileID); const char* FileStart = Buf->getBufferStart(); @@ -266,11 +267,14 @@ void html::AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID) { SourceLocation StartLoc = SourceLocation::getFileLoc(FileID, 0); SourceLocation EndLoc = SourceLocation::getFileLoc(FileID, FileEnd-FileStart); - // Generate header - R.InsertCStrBefore(StartLoc, - "<!doctype html>\n" // Use HTML 5 doctype - "<html>\n<head>\n" - "<style type=\"text/css\">\n" + std::ostringstream os; + os << "<!doctype html>\n" // Use HTML 5 doctype + "<html>\n<head>\n"; + + if (title) + os << "<title>" << html::EscapeText(title) << "</title>\n"; + + os << "<style type=\"text/css\">\n" " body { color:#000000; background-color:#ffffff }\n" " body { font-family:Helvetica, sans-serif; font-size:10pt }\n" " h1 { font-size:14pt }\n" @@ -314,8 +318,10 @@ void html::AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID) { " td.rowname {\n" " text-align:right; font-weight:bold; color:#444444;\n" " padding-right:2ex; }\n" - "</style>\n</head>\n<body>"); + "</style>\n</head>\n<body>"; + // Generate header + R.InsertStrBefore(StartLoc, os.str()); // Generate footer R.InsertCStrAfter(EndLoc, "</body></html>\n"); |