Stream: show and tell

Topic: rocwise-editor-themes


view this post on Zulip jan kili (Mar 21 2025 at 20:53):

I forked popular syntax highlighting themes to make Roc look as beautiful and readable as possible! https://gitlab.com/JanCVanB/rocwise-editor-themes

With @Eli Dowling's help, Roc now looks okay in most themes, including popular defaults. However, I don't like the varied and semi-arbitrary token groupings used by even the best themes - some try very hard to be logical for most programming languages, some seem to try to use as many palette colors as possible, and no two themes group tokens the same way. I want to switch color themes based on my mood, surroundings, or presentation audience... without my code randomly reading differently as a result.

Therefore, I decided on a simple set of coloring rules, based on Roc's semantic concepts (because Roc is my primary language today). I'm now 99% delighted with how Roc looks in my editor (Helix)! :tada:

Unlike almost every online discussion thread, I welcome bikeshedding on my color choices! See the repo's screenshot gallery and coloring rules doc. In your favorite theme that I've implemented so far, what would you change?

basic-cli examples in Helix colored with rocwise's Solarized Dark
basic-cli examples in Helix colored with rocwise's Catppuccin Mocha
basic-cli examples in Helix colored with rocwise's Catppuccin Latte

view this post on Zulip jan kili (Mar 21 2025 at 21:16):

The repo has "before and after" screenshots for each theme - here's one example, where the default choices (for where & how to apply the palette colors) feels arbitrary before and clear after:
helix.dracula.before.png
helix.dracula.after.png

view this post on Zulip jan kili (Mar 21 2025 at 21:31):

Anthony Bullard said:

Oh, and of course, see it in Catppuccin Mocha

:check:
More theme requests welcome! :blush:

I'm currently planning to at least implement these, because they're the ones with first-party support in Helix+Zellij+Wezterm (my stack).

view this post on Zulip jan kili (Mar 21 2025 at 21:37):

Oh, and I'll also support NeoVim soon.

view this post on Zulip Isaac Van Doren (Mar 22 2025 at 02:20):

Sweet, they look really good!

view this post on Zulip Richard Feldman (Mar 22 2025 at 03:20):

these look beautiful, Jan!!! :heart_eyes:

view this post on Zulip Anton (Mar 22 2025 at 08:54):

Catppuccin Mocha is my favorite :)

view this post on Zulip Eli Dowling (Mar 22 2025 at 09:07):

@JanCVanB Very nice!
I love the idea, but I think we have very different ideas about the visual importance of different syntactic elements. Which in itself is actually quite interesting.
In my own slightly customised scheme it goes:
Keywords > types> syntax/brackets functions> literals/operators > namespaces > strings> variables > comments.

I certainly don't think that's ideal and if I sat down to remake it I'd shuffle it just a little. But I find the low importance places on keywords and high importance on namespaces doesn't read as well for me

view this post on Zulip jan kili (Mar 22 2025 at 16:05):

Interesting! When you say "I find the low importance places on keywords and high importance on namespaces does read as well for me" are you referring to rocwise, and do you mean "importance placed* on ... doesn't* read as well"?

Here's an approximation of the visual importance/pop/contrast I'm aiming for:

strings/tags == numbers
>= def names == func names == type/module names
>= keywords/operators
> punctuation/comments

I'm not sure which of your >s are more/less significant, but two differences in priority stand out regardless:

I'm skeptical of those priorities, but I'm curious to hear why you/others prioritize things differently!

view this post on Zulip jan kili (Mar 22 2025 at 16:32):

Also, I've decided to make some sacrifices to my "visual importance" priorities because I'm more-highly prioritizing the consistency of color hues across themes - purple for keywords/operators, pink for types/namespaces, etc.

I'm curious if hue consistency won't scale well to color palettes that don't feature one or more of those hues, but I'll keep pushing it until it fails, because so far I really like forming associations between those hues and their semantic meaning (blue functions transform like water... pink types are the brain's mental model... haha)

view this post on Zulip Brendan Hansknecht (Mar 22 2025 at 16:38):

I'll definitely have to set this up at some point with dusk-fox. I now use ghostty with dusk-fox and helix set to terminal colors with transparent background.

view this post on Zulip Eli Dowling (Mar 22 2025 at 19:13):

Oh no! I did mean doesn't @JanCVanB

view this post on Zulip jan kili (Mar 22 2025 at 19:59):

Cool, that's what I assumed in my comparison & questions above :)

view this post on Zulip jan kili (Mar 22 2025 at 20:03):

Brendan Hansknecht said:

I'll definitely have to set this up at some point with dusk-fox. I now use ghostty with dusk-fox and helix set to terminal colors with transparent background.

I'm happy to try adding those color palettes! I'm curious to use them as guides for what "supporting NeoVim" actually entails, for higher-complexity themes.

view this post on Zulip Ian McLerran (Mar 24 2025 at 16:32):

These look amazing, Jan! Awesome work! :rainbow::star_struck:

view this post on Zulip Eli Dowling (Mar 24 2025 at 16:36):

JanCVanB said:

If I get some time sometime I'll try creating my ideal theme, it might be a fun exercise. And should clarify some of my points

view this post on Zulip Eli Dowling (Mar 24 2025 at 16:37):

I think I generally like to be able to get a feel for the structure of code as the highest priority which is why keywords and scoping syntactical elements are important in my eyes.

view this post on Zulip jan kili (Mar 24 2025 at 17:10):

Ooh, that makes sense! Intriguing perspective - I'll keep an eye out for wanting that too.


Last updated: Jul 06 2025 at 12:14 UTC