Add diff highlighting.

Authorfritjof@alokat.org
Date3 weeks ago
Hasha7711a098587661eb9a61f0e94b8e5cd703523d7

Summary

M ./src/DarcsWeb/Html.hs -1 +12
M ./static/style.css +14

Diff

patch a7711a098587661eb9a61f0e94b8e5cd703523d7
Author: fritjof@alokat.org
Date:   Wed Mar 11 20:27:07 UTC 2026
  * Add diff highlighting.
hunk ./src/DarcsWeb/Html.hs 216
-          , "<pre class=\"diff\">", esc (psDiff ps), "</pre>\n"
+          , "<pre class=\"diff\">", highlightDiff (psDiff ps), "</pre>\n"
hunk ./src/DarcsWeb/Html.hs 397
+-- | Highlight diff output: added lines in green, removed lines in red,
+--   hunk headers in blue.
+highlightDiff :: Text -> Text
+highlightDiff = T.concat . map highlightLine . T.lines
+  where
+    highlightLine l
+      | T.isPrefixOf "+" l  = "<span class=\"diff-add\">" <> esc l <> "</span>\n"
+      | T.isPrefixOf "-" l  = "<span class=\"diff-del\">" <> esc l <> "</span>\n"
+      | T.isPrefixOf "@@" l = "<span class=\"diff-hunk\">" <> esc l <> "</span>\n"
+      | otherwise            = esc l <> "\n"
+
hunk ./static/style.css 370
+}
+
+.diff-add {
+  color: #22863a;
+  background: #e6ffec;
+}
+
+.diff-del {
+  color: #cb2431;
+  background: #ffeef0;
+}
+
+.diff-hunk {
+  color: #6f42c1;