From b8c8871191bcc2ece9007a0941e5145c62e4e3ab Mon Sep 17 00:00:00 2001 From: Andrew Jorgensen Date: Tue, 13 Apr 2021 08:24:30 -0700 Subject: [PATCH] fix: code highlighting using Chroma (#20) Chroma sets `color` (usually) and `background-color` directly on a `
` element under a `
` but the theme was interfering with those color settings from both the `code` and `pre code` selectors. Since Chroma highlighting is under a `highlight` class we can `unset` the colors that are set by the `code` selector elsewhere, so that under a `` element that's under a `
` it will just inherit from the `
` above it where
Chroma sets all it's colors.

The `color: initial;` instead of `color: unset;` is needed because some
Chroma styles don't set a default text color, and if you use `unset`
instead that lets the browser use a lighter default text color when
using a dark color scheme.

That's a sort of long winded way of saying that I think I've fixed the
color interference problem in a way that won't mess with anything else
in the theme. I've tested this on a wide selection of Chroma styles,
with both light and dark color schemes and it seems to work correctly in
all cases. Which is to say that Chroma appears to have full control of
both `color` and `background-color` for code blocks that it's
highlighting.

Fixes #19
---
 layouts/partials/style.html | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/layouts/partials/style.html b/layouts/partials/style.html
index 6d1a66b..173aec9 100644
--- a/layouts/partials/style.html
+++ b/layouts/partials/style.html
@@ -75,6 +75,11 @@
     font-size: 14px;
   }
 
+  div.highlight code {
+    background-color: unset;
+    color: initial;
+  }
+
   blockquote {
     border-left: 1px solid #999;
     color: #222;