Skip to content

Srcery Next (v3.0.0)#144

Merged
roosta merged 64 commits into
masterfrom
next
May 7, 2026
Merged

Srcery Next (v3.0.0)#144
roosta merged 64 commits into
masterfrom
next

Conversation

@roosta

@roosta roosta commented May 6, 2026

Copy link
Copy Markdown
Member

Srcery Next (v3.0.0)

This PR aims to enhance compatibility with modern (neo)vim features, normalize syntax colors across languages and parsers. It also include color changes, including a new background color.

To get this fully merged, we also need to merge the next branch in srcery-terminal.

Change log

Generated a CHANGELOG using gif cliff, check each SHA for detailed comments.

🚀 Features

  • Add opt for normal float (2c0b16a)
  • Redesign background shades (f4c5710)
  • Add dark variant colors (05d0d58)
  • Add dim_green color and improve diff view (2649c68)

🐛 Bug Fixes

  • Begin linking types (41d5d04)
  • Sneak hl (e2b8927)
  • Link treesitter mark.link to htmlLink (58011d1)
  • Define missing decorator base group (02ae01b)
  • Link legacy diff groups to current (3c8903e)
  • Add groups for nvimpager (5e1e0be)
  • Remove unneeded background color (80b28f7)
  • [breaking] Join all inverse opts (6d401e4)
  • [breaking] Simplify background option (4fb8f3e)
  • Default to srcery_black as bg (4af84aa)
  • Rename xgray, fix plugin color refs (46bbf29)
  • Conflict on visual vs cur/incsearch (eb82627)
  • Fix visual cursorline conflict (880c117)
  • Add nvim-cmp highlights (bd691b0)
  • Update pmenu groups, add missing border (01232bc)
  • Fix non-visible float border (7c79765)
  • Dark_red was linked to blue (7fd23dd)
  • Remove broken test from italics opt (0b89599)
  • Align xml with svg and other markup (8507f14)

🚜 Refactor

  • Large restructure of all groups (f1987d0)
  • Normalize hi groups (806d722)
  • Remove memoize groups (cf1b6d4)

📚 Documentation

  • Reword readme for new options + improvements (78785c7)
  • Add new screenshots + formatting (0a2f2a6)
  • Update statusline instructions (37a80e3)
  • Add color variable table inside details (947302a)
  • Whitespace (c60e31b)
  • Fix vim help docs (396e65c)

🎨 Styling

  • Unify markup headings (cce4a86)
  • Differentiate between HTML tag types (007e3de)
  • Darken NormalFloat (xgray2 -> 1) (95a5885)
  • Use orange for Define (a464d2d)
  • Change JS and TS prop to bright blue (ad3fb5b)
  • Change htmllink from bright_white to white (2d14eae)
  • Remove blue from Underlined (b4e7fd8)
  • Change todo and label colors (b429ac9)
  • Set char to green (9c4d70e)
  • Set level 1 headings to bright blue (48c9876)
  • Link additional types to base group (3c2847b)
  • Match htmlTag regex and treesitter (4c8a1a9)
  • Add more base groups, rm italic type (708b54e)
  • Sort groups (fe18128)
  • Remove snacks and telescope groups (81ef7af)
  • [breaking] Remove hard_black term background (64736d7)
  • Align indent for script vars (6379fd9)
  • Change default search hl to none + gray (78c0684)
  • (whitespace) Fix indent (e4f4e34)
  • Increase NonText contrast (161b2d8)
  • Set ts macro color to bright yellow (8b21898)
  • UI improvements (7180da2)
  • (whitespace) Align color vars (f8496d4)
  • Set DiffChange to gray3 (ac1c3a2)
  • Revert NormalFloat contrast change (e6fd0c5)
  • Increase brightness for split border (ef7ea19)

⚙️ Miscellaneous Tasks

Breaking Changes

See README or or :help srcery for usage instructions for the new variables.

  • Background option simplified: srcery_bg renamed to srcery_background and now behaves like other color variables — set to 'NONE' for transparent backgrounds. (4fb8f3e)
  • Removed srcery_hard_black_terminal_bg: this option only worked in regular Vim, not Neovim. (64736d7)
  • Inverse options consolidated: removed srcery_inverse_matches and srcery_inverse_match_paren in favor of a single inverse toggle. (6d401e4)

Screenshots

C Rust Python Typescript Popup
Dignostic Diff View Markdown Terminal

roosta added 30 commits May 6, 2026 11:33
fix: unify heading colors across markup

Use the same defined heading colors for markdown and HTML, and what ever
else might need headings down the line

fix: render-markdown heading background

It will link to `diffRemoved`, which only has `fg` defined, which in turn
would result in headings below a certain level would be red. I don't
know the rationale linking it to `diffRemoved`, maybe its common to add a
background to those groups, i do not know. In lue of colored background
shades I set it to `xgray1`, to simulate the effect I see in
`render-markdown` `readme` screenshots.
Instead of coloring directly link to types, this is so to enforce some
consistency between file types.
New group introduced that wasn't in sneak previously `SneakCurrent`, I
linked it to Search. I don't see any need to differentiate current and
other, cursor is already quite visible when using sneak, and if enabling
`set cursorline`, it's even more so.
Found 2 to be a bit too bright
Matches macro, which I think is appropriate
Remove function link, as its linked to function already
Keeping the underline, but differentate from normal text
For consistency, it was blue, not sure about what tree of links got it
there, but it was to much, while bright_white is too little.
fix: add legacy diff groups

fix: unify legacy and current diff groups
style: change todo to bright orange

style: set Label to bright red
String is bright green, feels more consistent
Had issues with colors being wrong in nvimpager for certain output, took
some serious digging to find any reference to these groups, and the
names are a bit odd, I checked the source and they are generated with
those names, but I'm worried it'll break, or additional groups are
needed.
Commented out groups I suspect aren't needed, but mainly moved stuff
around so it made a bit more sense, named sections and not so much
deeply nested folds. 1 level is enough IMO.

This is a larger effort to normalize the theme any rely on base language
groups for most syntax highlighting, making treesitter and regex similar
if not exactly the same.
The goal of this commit is to normalize all language hi groups. Instead
of specifying a color for each hi group, rely on defaults, or link to
base language groups. This makes for easier maintenance, and more
consistent colors. Keyword is keyword in any language that links to
keyword.

I've left links to basegroups if they were present before this
refactor, else I've tried to include sane links, but there will be large
differences from previous versions
This is a bad idea, when inspecting a hl group in nvim, it'll say that
it links to that group, which tells me nothing. For example, I'm
investigating why a certain word in a certain language looks the way it
looks, then inspecting the word, it'll say its linked to SrceryRed,
which is meaningless, I don't actually know which of the base groups are
being referenced, it would be any of those having SrceryRed as a base
color.

I fixed the lightline theme as well because it referenced the same
groups. We maintain global variables for color hexes, and the termcolors
are always the same so I just referenced those instead.
Additionally remove reference comments from previous refactors
Setting type to italic by default, don't see a need to optionally set
this, we already have an italic toggle, and that should cover this as
well.
I think these mostly have been added so that we can reach the special
attr (bold, italic etc), but none is the correct way of getting to those
arguments

There are UI elements that have background set, not gonna touch those
for now.
Try to be consistent with ordering, function calls on top, links on
bottom. Sorted.
Dont need these, it should have sensible defaults and use basegroups
The inverse options were getting confusing, use instead one var to
control whether inverse is used or not. Ad

BREAKING CHANGE: Removes options srcery_inverse_matches,
srcery_inverse_match_paren.
This only works in regular vim, not nvim, so for the sake of
consistency lets keep it the same across envs

BREAKING CHANGE: Removes the srcery_hard_black_terminal_bg
The functionality has been removed in a prev commit, this removes the
non-functioning opt
roosta added 18 commits May 6, 2026 12:26
Dark_blue is not in the json palette yet, or at least not in any
published version of it yet
Update popups, window borders and tabline colors

style: match tabline colors with status

style: change win split to gray4

bright white is a bit much, possibly add some opts for this

style: increase popup contrast
Previous implementation colored the foreground of diffs, and didn't make
it clear where the changes was. This uses the new dark and dim colors to
improve diff readability, especially word diff
docs: add screenshots table

Created new screenshots the presents a bit better, trying to showcase as
many features as I can

docs: wrap install instructions in details

Users probably only need one of them, and it cleans up the readme a bit

docs: rearrange headlines

docs: add tip about transparent background

Just now confirmed it does work, not sure if every UI element is accounted
for, some maybe should be transparent but isn't.
My kitty term doesn't export TERM_ITALICS, and most terminal emulators
ive ever used, even back in the xorg days supports italic, not sure if
there is a reliable way to check for this in every terminal, and if we
even should. Leave it as a user preference.
docs: reformat statusline instructions

Considering making it even simpler as two of the three statusline
plugins load the theme automatically.

I also fixed a few typos and formatting issues

docs: simplify and add screenshot to statusline

Felt folds got a need unnecessary, as there is just one statusline that
needs configuration, the others load automatically.

docs: add vim.pack instructions

docs: format table, update use instructions

I feel setting the var like this is slightly more idiomatic, and less
confusing. Add some text formatting to table, shame I cant get
undercurl.
This is an xterm color at index 30, and it isn't used anywhere in the
theme yet, but it is defined in the palette package, and is used some
other places where extra colors are needed (ls colors for example, where
teal typically signify a directory)
Handy with a full list, but keep it hidden by default
Leave pmenu as is, NormalFloat was to bright, but the pmenu need to stick out a
bit more.
Match md readme with some rewritten sections

docs: update vim help file, add introduction

docs: add statusline section

docs: fix alignment, headings, modeline

docs: fix local-additions entry

:help help-writing states that this should be srcery.txt + description
check :help local-entries

docs(modeline): rm dup, unneeded opts

not sure why norl is there, the :help help-writing says it should just
be filetype, textwidth and tabstop, I left noet because seems like tab
is a thing in help syntax

docs: rename heading + realign

docs: fix heading
MindTooth
MindTooth previously approved these changes May 6, 2026

@MindTooth MindTooth left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, cool. 🥳 Used cliff in the past. Really nice. Which plugin shows icon/syntax in Markdown ```?

Really, really nice job!

@MindTooth MindTooth dismissed their stale review May 6, 2026 16:12

Not sure how this works.

@MindTooth

Copy link
Copy Markdown
Member

Recommend https://github.com/crate-ci/typos to catch some typos.

Screenshot 2026-05-06 at 18 13 38

@roosta

roosta commented May 7, 2026

Copy link
Copy Markdown
Member Author

Thanks! 🙂 The plugin is render-markdown.nvim

@roosta roosta requested a review from MindTooth May 7, 2026 08:19
@roosta

roosta commented May 7, 2026

Copy link
Copy Markdown
Member Author

I did a final test to ensure that all options are working as expected, fixed the typos. I think we're good for a merge?

@MindTooth MindTooth left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's go! 🥳

@roosta roosta merged commit 445b23f into master May 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants