Change highlight.js styles?

I have customized the colors of my Discourse instance to use a dark background color, however syntax highlighting does not look good anymore.

What is the easiest way to tell highlight.js to use a different style?

2 Likes

Admin, customize, css

2 Likes

Oh right, thanks Jeff.

Unfortunately it looks like it isn’t working correctly.

I copy/pasted the CSS from the Agate theme to a new section in Admin / Customize / CSS:

However I get the following results:

(Link to the page: Some thoughts on beta 1.4 - appleseed Users Forum)

Notice that the .hljs-string color is #f99 which does not match the declared style of this class in the Agate theme:

.hljs-string,
.hljs-bullet {
  color: #a2fca2;
}

Not sure what I’m doing wrong. Any clue?

Looks like I would need to add !important to each CSS property…

Is anyone aware of a better solution?

Edit: it doesn’t look like the !important solution would even work…

Nope, it’s because the default has a higher specificity - .hljs-tag .hljs-string . You need to replicate the theme’s rule with that selector.

3 Likes

Thanks @riking, I hadn’t seen this.

Unfortunately that means it’s basically impossible to try highlight.js themes (from their demo page) to find one that fits the color palette of my Discourse instance without inspecting and tweaking them, one rule at a time…

So I guess my original question remains: what’s the (second) easiest way to try an highlight.js theme with Discourse?

5 Likes

Just bumping this in case anyone else has found a nice way of importing nicer and more colourful styles for syntax highlighting of code? Something that looks more like a modern code editor’s view.

Custom CSS would be an acceptable solution, wondered if anyone has either put suitable CSS in a CDN for import, or a theme component?

3 Likes

I agree it is pretty fiddly overriding what we have. Highlight ships with a big pile of themes at:

https://github.com/highlightjs/highlight.js/tree/master/src/styles

A custom theme can certainly provide a unique look to a site:

@Johani maybe we should do a #howto which explains how to take CSS from the official repo transform them and get them to work with our CSS?

5 Likes

I made a theme component that allows admins to select a hljs theme from a dropdown. More details here

6 Likes