vim / colorschemes

colorschemes for Vim
274 stars 23 forks source link

sorbet #229

Closed neutaaaaan closed 1 year ago

neutaaaaan commented 1 year ago

cold is a quick and dirty hack meant to allow us to validate the basic palette of our cold colorscheme, and to get feedback on some of my ideas. It was built from the 256c-safe terminal palette up, with the intention of ever so slightly massaging the gui version to match the slight tint of the gui background, which is, so far, the only gui feature implemented.

Nord and Iceberg use a fairly limited palette, and reuse those colors for various groups and subgroups. I've taken a cue from this : Statement, PreProc and Type are the same shade of blue, as in languages derived from C they generally tend to map to very "structural" elements. Comments are purple.

I have built several variants, to showcase what I thought were the most interesting arrangements based on the main palette:

I have also built 2 variants that don't highlight the Identifier and Function groups, as some languages are too irregular for vim to reliably highlight those elements.

Overall I'm somewhat partial to cold2a as it negates a very common inconsistency that always bothered me, and the way the colors are arranged don't match any of my other colorschemes too closely. cold2b definitely suffers from looking like an off-brand version of Iosvkem.

I expect the UI to be horribly broken. Diffs work, but the palette will have to be aligned with the rest of the colors. The colors used for the various Search elements will have to be adjusted as well. The name is obviously not final.

habamax commented 1 year ago

Statement, PreProc and Type being the same blue might be "too extreme" I think, at least for vimscript files. I remember others were using different shades of subtle blue and a lot of overriding of syntax hl groups to be usable.

image

Although it looks ok for c: image

neutaaaaan commented 1 year ago

For reference: iceberg and nord

A casual eyeball grep of Iceberg reveals about 150 language-specific bodge wires, and Nord has something like 250 lines of the stuff before getting into 3rd party plugins. And they only care about a handful of languages. There are some low-hanging fruits, like vim configuration files, that make heavy use of Preproc, but if we were to try and do that comprehensively, we would in effect end up redefining the syntax highlighting provided by some of the more whimsical syntax files shipped with the runtime.

I'd be more interested in knowing if, seen through the prism of these are things the compiler needs to know / things provided by the language or program, using the same color for all three groups generally makes sense. Then, depending on how sensible the syntax files are, we could try and massage meaning out of those elements when this very loose definition doesn't provide good enough results.

I'd also like to take a hard look at syntax files, but that's out of scope for this project.

habamax commented 1 year ago

I would go with your Iosvkem instead (but not the name, I did several mistakes while typing it), @neutaaaaan. Add bluish tint in GUI and maybe some other tweaks...

wildcharm with a bit of bluish bg:

image

Not enough cold I think :), but in your Ioskvem we can try to play with colors.

neutaaaaan commented 1 year ago

@habamax the current palette of cold is already pretty much Iosvkem shifted towards blue and made a bit softer.

Here's both, arranged like Iosvkem, 256c on a #161821 background.

Iosvkem has a really bad collision between Statement and Preproc that I've never been able to fix. image So does cold with Preproc set to ctermfg=67 as in Iosvkem, but it also introduces some ambiguity between Statement and Type. image

@romainl and I had a bit of a chat yesterday and --paraphrashing-- came to the conclusion that a cold 256c colorscheme that doesn't look horrible, or doesn't have really bad readability issues is pretty much impossible to build.
On the other hand, the palette I've come up with seems like a pretty good take on the soft pastel trend of the 2010s.

habamax commented 1 year ago

What was the conclusion, @neutaaaaan ? Go for ioskvm?

neutaaaaan commented 1 year ago

I hadn't realized when I suggested it but Iosvkem can't degrade down to 8c without exhibiting the same issue you have with cold. Statement and Preproc are 2 slightly different shades of blue.

cold doesn't seem to do any worse than nord or iceberg to me.

neutaaaaan commented 1 year ago

Renaming to sorbet, a more accurate description of the chilled pastel vibe suggested by @romainl . Minor UI tweaks, still needs to go through a proper harmonization pass.

Thinking about settling on the 1a variant.

romainl commented 1 year ago

FWIW, here is how they look in Terminal.app @256c:

Sorbet1a

Capture d’écran 2023-03-02 à 15 36 07

Sorbet1b

Capture d’écran 2023-03-02 à 15 36 35

Sorbet2a

Capture d’écran 2023-03-02 à 15 36 50

Sorbet2b

Capture d’écran 2023-03-02 à 15 37 04

And in the MacVim GUI, where there appears to be a problem with StatusLine:

Sorbet1a

Capture d’écran 2023-03-02 à 15 39 51

Sorbet1b

Capture d’écran 2023-03-02 à 15 40 02

Sorbet2a

Capture d’écran 2023-03-02 à 15 40 22

Sorbet2b

Capture d’écran 2023-03-02 à 15 40 34

I am partial to 1a and 2b, in that order.

habamax commented 1 year ago

I am for sorbet1a variant.

btw, I think tabpages should be somewhat in the same colorspace as splits: image

habamax commented 1 year ago

And what about giving PreProc light blue color? I know with your font, @neutaaaaan it is indistinguishable, but in my environment looks better: image

habamax commented 1 year ago

EndOfBuffer probably should be more subtle?

image

neutaaaaan commented 1 year ago

Haven't even started work on the UI, you're staring at quiet through sorbet there.

habamax commented 1 year ago

Should we check 16c,8c or only 256 and gui for now?

habamax commented 1 year ago

256 and gui

I would've made Pmenu and StatuslineNC different:

image

romainl commented 1 year ago
neutaaaaan commented 1 year ago

I've softened up most of the ui significantly, but I'm worried about clashes with diffs now.

I'm fine with the blue StatusLine colors, that'd allow me to use the purple ones for Pmenu. Not sure how to handle EndOfBuffer, that's never been a consideration to me.

habamax commented 1 year ago

Not sure how to handle EndOfBuffer, that's never been a consideration to me.

What about linenrblack? image

neutaaaaan commented 1 year ago

image

I've reverted the changes to the various Search colors, they just clashed too hard with diffs. I'm fine having somewhat jarring colors for UI elements that aren't expected to be displayed for too long.

The shades of blue suggested by @romainl seem overpowering, and even further away from the main palette than the nigh gray shade of purple I picked initially.

habamax commented 1 year ago

ErrorMsg should be probably linked to Error: image

habamax commented 1 year ago

SpecialKey needs some subtle love too:

image

habamax commented 1 year ago

@neutaaaaan Looks good to me

image

Let me know when 16/8 is ready to check.

neutaaaaan commented 1 year ago

This should be pretty close to final.

romainl commented 1 year ago

I will take it for a spin in 256c for the rest of the week.

romainl commented 1 year ago

So, it looks like the styles for Search, IncSearch, CurSearch, and Visual are still those from quiet (or close, I didn't check too carefully):

Capture d’écran 2023-03-08 à 17 56 42 Capture d’écran 2023-03-08 à 17 56 56

They seem out of place to me. Too saturated.

Here is 179 (taken from the sorbet palette) for Visual, which feels more integrated to me:

Capture d’écran 2023-03-08 à 18 01 01
neutaaaaan commented 1 year ago

That's a conscious choice, I find having distinct palettes for different contexts or "layers" is much less cognitively demanding. Visual and IncSearch both being used as part of some temporary selection mechanism, I reuse the same color.

179 is too drab. I initially tried 215, which worked fine, but the corresponding shades of blue and pink just disappeared inside diffs.

habamax commented 1 year ago

Both 16c/8c

I am not a fan of StatuslineNC/Tabline and lack of Cursorline -- I guess this is conscious choice as well?

image

I personally like more hi statuslinenc cterm=reverse ctermbg=0 ctermfg=7

image

But that is probably subjective.

Not sure if IncSearch underline was intended? image

neutaaaaan commented 1 year ago

Doing that to StatusLineNC is a recipe for disaster, but thanks for indirectly reminding me I have to track down and fix every 8c group that uses bold and "punches through" its palette, as this can't be relied upon. However that'll have to wait until tomorrow, I won't be home much today.

IncSearch is fixed.

neutaaaaan commented 1 year ago

Currently thinking about overriding some of the default syntax to avoid ambiguous situations, like inside various kinds of diffs where elements deleted inherit their color from Special and end up being cyan.

So far I've only noticed issues with DiffRemoved, but if you think there's a case to be made for any other override, it's now or (probably) never.

romainl commented 1 year ago

I'm not a fan of WildMenu, for the same reasons as with Visual, Search & Co.

Capture d’écran 2023-03-11 à 09 23 02

Those ui colors feel out of place. But they work and are easily identifiable, which is the ultimate goal.

habamax commented 1 year ago

Wildmenu is ugly

neutaaaaan commented 1 year ago

Not a fan of WildMenu either, I figure this could work:

habamax commented 1 year ago

I think it is ready

romainl commented 1 year ago

@neutaaaaan @habamax let's go.