diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp index d3247846bc6..349b088c332 100644 --- a/lib/Rewrite/HTMLRewrite.cpp +++ b/lib/Rewrite/HTMLRewrite.cpp @@ -311,6 +311,10 @@ void html::AddHeaderFooterInternalBuiltinCSS(Rewriter &R, FileID FID, " -webkit-border-radius:5px; -webkit-box-shadow:1px 1px 7px #000; " " border-radius:5px; box-shadow:1px 1px 7px #000; " "position: absolute; top: -1em; left:10em; z-index: 1 } \n" + " #tooltiphint { position: fixed; width: 50em; margin-left: -25em;" + "left: 50%; padding: 10px; border: 1px solid #b0b0b0;" + "border-radius: 2px; box-shadow: 1px 1px 7px black; " + "background-color: #c0c0c0; z-index: 2; }\n" " .macro { color: darkmagenta; background-color:LemonChiffon;" // Macros are position: relative to provide base for expansions. " position: relative }\n" diff --git a/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp index 635625107f0..acddcefc88f 100644 --- a/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ b/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp @@ -101,6 +101,9 @@ class HTMLDiagnostics : public PathDiagnosticConsumer { /// \return Executed lines from \p D in JSON format. std::string serializeExecutedLines(const PathDiagnostic &D); + + /// \return Javascript for displaying shortcuts help; + std::string showHelpJavascript(); }; } // end anonymous namespace @@ -347,6 +350,8 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R, int LineNumber = path.back()->getLocation().asLocation().getExpansionLineNumber(); int ColumnNumber = path.back()->getLocation().asLocation().getExpansionColumnNumber(); + R.InsertTextBefore(SMgr.getLocForStartOfFile(FID), showHelpJavascript()); + R.InsertTextBefore(SMgr.getLocForStartOfFile(FID), generateKeyboardNavigationJavascript()); @@ -399,9 +404,17 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R,

Annotated Source Code

-

[?] - Use j/k keys for keyboard navigation -

+

Press '?' + to see keyboard shortcuts

+ )<<<"; R.InsertTextBefore(SMgr.getLocForStartOfFile(FID), os.str()); @@ -461,6 +474,34 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R, html::AddHeaderFooterInternalBuiltinCSS(R, FID, Entry->getName()); } +std::string HTMLDiagnostics::showHelpJavascript() { + return R"<<<( + +)<<<"; +} + std::string HTMLDiagnostics::showRelevantLinesJavascript(const PathDiagnostic &D) { std::string s;