Merge pull request #3 from brianpooe/claude/match-jetbrains-darcula-theme-01DqS4D8akyP5Y8wUkaq3Xbm

feat: add comprehensive plugin support and improve LSP semantic highl…
This commit is contained in:
Brian Pooe 2025-11-15 10:41:10 +02:00 committed by GitHub
commit 110867de7d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 385 additions and 31 deletions

142
README.md
View file

@ -1,48 +1,107 @@
![Darcula-solid.nvim](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-logo.png) ![Darcula-solid.nvim](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-logo.png)
# Darcula-solid.nvim # Darcula-solid.nvim
A color-scheme that was heavily inspired by the JetBrains IntelliJ IDEA default theme, but was carefully refined to bring a more pleasant, aesthetic, and contrasting experience to our beloved Neovim. A high-fidelity Neovim color scheme that perfectly matches the official JetBrains Darcula theme. Built with [Lush](https://github.com/rktjmp/lush.nvim) for easy customization and comprehensive plugin support.
## ✨ Features ## ✨ Features
* [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter) support * **Pixel-perfect JetBrains Darcula colors** - Official color palette from IntelliJ IDEA
* [NvimTree](https://github.com/kyazdani42/nvim-tree.lua) support * **Full nvim-treesitter compatibility** - Complete support for all modern Tree-sitter capture groups
* 256 colors * **LSP Semantic Tokens** - Enhanced highlighting with italic/bold modifiers for static, abstract, and readonly
* Beautiful contrasting (IntelliJ like) colors * **Extensive plugin support** - 20+ popular plugins themed out of the box
* **256 colors** - Full true color support
* **Backward compatible** - Legacy Tree-sitter groups maintained for older versions
## 🎨 Supported Plugins
* **Completion**: [blink.cmp](https://github.com/Saghen/blink.cmp), [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
* **File Explorers**: [nvim-tree](https://github.com/nvim-tree/nvim-tree.lua), [neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim)
* **Fuzzy Finder**: [Telescope](https://github.com/nvim-telescope/telescope.nvim)
* **Git**: [GitSigns](https://github.com/lewis6991/gitsigns.nvim), [Neogit](https://github.com/TimUntersberger/neogit)
* **UI**: [Noice](https://github.com/folke/noice.nvim), [Bufferline](https://github.com/akinsho/bufferline.nvim), [Which-Key](https://github.com/folke/which-key.nvim)
* **Utilities**: [Lazy](https://github.com/folke/lazy.nvim), [Mason](https://github.com/williamboman/mason.nvim), [Trouble](https://github.com/folke/trouble.nvim)
* **Navigation**: [Hop](https://github.com/phaazon/hop.nvim), [Leap](https://github.com/ggandor/leap.nvim)
* **Notifications**: [nvim-notify](https://github.com/rcarriga/nvim-notify)
* **Indentation**: [indent-blankline](https://github.com/lukas-reineke/indent-blankline.nvim)
* **Dashboard**: [alpha-nvim](https://github.com/goolord/alpha-nvim)
## ⚡ Requirements ## ⚡ Requirements
* Neovim 0.8+ (recommended 0.9+)
* `termguicolors` enabled for true color support * `termguicolors` enabled for true color support
* (recommended) [Neovim 0.5](https://github.com/neovim/neovim/releases) * (recommended) [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) for enhanced syntax highlighting
* (recommended) [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter) * (recommended) LSP server for semantic token highlighting
## 📦 Instalation ## 📦 Installation
With [Packer](https://github.com/wbthomason/packer.nvim)
### [lazy.nvim](https://github.com/folke/lazy.nvim) (Recommended)
```lua ```lua
use { "briones-gabriel/darcula-solid.nvim", requires = "rktjmp/lush.nvim" } {
"briones-gabriel/darcula-solid.nvim",
dependencies = { "rktjmp/lush.nvim" },
priority = 1000, -- Load before other plugins
config = function()
vim.cmd("colorscheme darcula-solid")
end,
}
``` ```
With [Plug](https://github.com/junegunn/vim-plug)
### [Packer](https://github.com/wbthomason/packer.nvim)
```lua ```lua
Plug 'briones-gabriel/darcula-solid.nvim' use {
"briones-gabriel/darcula-solid.nvim",
requires = "rktjmp/lush.nvim"
}
```
### [vim-plug](https://github.com/junegunn/vim-plug)
```vim
Plug 'rktjmp/lush.nvim' Plug 'rktjmp/lush.nvim'
Plug 'briones-gabriel/darcula-solid.nvim'
``` ```
Or you can use your favorite plugin manager.
## 🔧 Configuration ## 🔧 Configuration
In your `init.vim`:
```vim
colorscheme darcula-solid
set termguicolors
```
Or in `init.lua`: ### Basic Setup
```lua ```lua
vim.cmd 'colorscheme darcula-solid' -- init.lua
vim.cmd 'set termguicolors' vim.opt.termguicolors = true
vim.cmd("colorscheme darcula-solid")
``` ```
And because the plugin is build with [Lush](https://github.com/rktjmp/lush.nvim), you can freely copy and edit the color-scheme to fit your needs.
## How to customize Or in Vimscript:
1. Create a `colors` directory if it doesn't exist at `~/.config/nvim/colors`. ```vim
2. Create a file for the modified theme: e.g `~/.config/nvim/colors/darcula-solid-custom`. " init.vim
3. Set your modifications: set termguicolors
colorscheme darcula-solid
```
### LSP Semantic Highlighting
For the best experience with semantic tokens (italic static/abstract members, etc.):
```lua
-- Ensure your LSP is configured to enable semantic tokens
-- Most LSP servers enable this by default
```
## 🎨 Color Palette
The theme uses the official JetBrains Darcula colors:
| Element | Color | Hex |
|---------|-------|-----|
| Background | Dark Gray | `#2B2B2B` |
| Foreground | Light Gray-Blue | `#A9B7C6` |
| Keywords | Orange | `#CC7832` |
| Strings | Green | `#6A8759` |
| Numbers | Blue | `#6897BB` |
| Comments | Gray | `#808080` |
| Functions | Yellow | `#FFC66D` |
| Types/Classes | Teal-Blue | `#769AA5` |
| Constants | Purple | `#9876AA` |
| Annotations | Olive-Yellow | `#BBB529` |
## 🛠️ Customization
Because the theme is built with [Lush](https://github.com/rktjmp/lush.nvim), you can easily customize it to your preferences:
1. Create a `colors` directory: `~/.config/nvim/colors`
2. Create a custom theme file: `~/.config/nvim/colors/darcula-solid-custom.lua`
3. Extend the base theme:
```lua ```lua
vim.opt.background = 'dark' vim.opt.background = 'dark'
vim.g.colors_name = 'darcula-solid-custom' vim.g.colors_name = 'darcula-solid-custom'
@ -50,24 +109,45 @@ vim.g.colors_name = 'darcula-solid-custom'
local lush = require('lush') local lush = require('lush')
local darcula_solid = require('lush_theme.darcula-solid') local darcula_solid = require('lush_theme.darcula-solid')
local spec = lush.extends({darcula_solid}).with(function() local spec = lush.extends({darcula_solid}).with(function()
-- Your modifications go here... -- Your modifications go here
-- Pallete copied from https://github.com/briones-gabriel/darcula-solid.nvim/blob/main/lua/lush_theme/darcula-solid.lua local yellow = lush.hsl(37, 100, 71)
local yellow = lush.hsl(37, 100, 71)
return { return {
-- Override specific highlight groups
Type { fg = yellow }, Type { fg = yellow },
Function { fg = darcula_solid.Normal.fg }, Function { fg = darcula_solid.Normal.fg },
-- Add more customizations...
} }
end) end)
lush(spec) lush(spec)
``` ```
4. In your config file (e.g. ~/.config/nvim/init.lua) set the theme to your custom one as follows:
4. Apply your custom theme:
```lua ```lua
vim.cmd("colorscheme darcula-solid-custom") vim.cmd("colorscheme darcula-solid-custom")
``` ```
A big thanks to [@rorystephenson](https://github.com/rorystephenson) for suggesting this amazing idea! ♥️ ## 🌟 Highlights
### Tree-sitter Support
Full support for all modern nvim-treesitter capture groups including:
- All `@keyword.*` variants (coroutine, import, type, modifier, etc.)
- Complete `@markup.*` groups for Markdown and other markup languages
- `@diff.*` groups for version control
- LSP semantic tokens with modifiers (static, abstract, readonly, deprecated)
### Italic & Bold Refinements
Following JetBrains conventions:
- **Bold** keywords for better visibility
- **Italic** for static members, abstract classes, and readonly properties
- **Italic** documentation comments
- **Strikethrough** for deprecated items
## 🙏 Credits
- Original theme inspired by the official JetBrains Darcula theme
- Thanks to [@rorystephenson](https://github.com/rorystephenson) for the customization idea
- Built with [Lush](https://github.com/rktjmp/lush.nvim) by [@rktjmp](https://github.com/rktjmp)
## Preview ## Preview
![darcula-solid](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-example.png) ![darcula-solid](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-example.png)

View file

@ -429,6 +429,13 @@ return lush(function()
["@lsp.mod.deprecated"] = { gui = "strikethrough" }, ["@lsp.mod.deprecated"] = { gui = "strikethrough" },
["@lsp.mod.readonly"] = { gui = "italic" }, ["@lsp.mod.readonly"] = { gui = "italic" },
["@lsp.mod.static"] = { gui = "italic" }, ["@lsp.mod.static"] = { gui = "italic" },
["@lsp.mod.abstract"] = { gui = "italic" },
["@lsp.mod.async"] = {},
["@lsp.mod.declaration"] = {},
["@lsp.mod.defaultLibrary"] = { gui = "italic" },
["@lsp.mod.definition"] = {},
["@lsp.mod.modification"] = {},
["@lsp.mod.documentation"] = {},
-- == LSP Diagnostics == -- -- == LSP Diagnostics == --
DiagnosticError({ fg = p.error }), DiagnosticError({ fg = p.error }),
@ -485,11 +492,20 @@ return lush(function()
TelescopeNormal({ bg = p.bg_light, fg = p.fg }), TelescopeNormal({ bg = p.bg_light, fg = p.fg }),
TelescopeBorder({ fg = p.border, bg = p.bg_light }), TelescopeBorder({ fg = p.border, bg = p.bg_light }),
TelescopePromptBorder({ fg = p.border, bg = p.bg_light }), TelescopePromptBorder({ fg = p.border, bg = p.bg_light }),
TelescopeResultsBorder({ fg = p.border, bg = p.bg_light }),
TelescopePreviewBorder({ fg = p.border, bg = p.bg_light }),
TelescopePromptTitle({ fg = p.keyword, bg = p.bg_light, gui = "bold" }), TelescopePromptTitle({ fg = p.keyword, bg = p.bg_light, gui = "bold" }),
TelescopeResultsTitle({ fg = p.function_call, bg = p.bg_light, gui = "bold" }),
TelescopePreviewTitle({ fg = p.number, bg = p.bg_light, gui = "bold" }),
TelescopePromptPrefix({ fg = p.keyword }), TelescopePromptPrefix({ fg = p.keyword }),
TelescopePromptCounter({ fg = p.fg_dark }),
TelescopeSelection({ bg = p.bg_visual, fg = p.fg }), TelescopeSelection({ bg = p.bg_visual, fg = p.fg }),
TelescopeSelectionCaret({ fg = p.keyword, bg = p.bg_visual }), TelescopeSelectionCaret({ fg = p.keyword, bg = p.bg_visual }),
TelescopeMultiSelection({ bg = p.bg_darker, fg = p.fg }),
TelescopeMultiIcon({ fg = p.keyword }),
TelescopeMatching({ fg = p.function_call, gui = "bold" }), TelescopeMatching({ fg = p.function_call, gui = "bold" }),
TelescopePreviewLine({ bg = p.bg_visual }),
TelescopePreviewMatch({ fg = p.function_call, gui = "bold" }),
-- GitSigns -- GitSigns
GitSignsAdd({ fg = p.hint }), GitSignsAdd({ fg = p.hint }),
@ -500,6 +516,264 @@ return lush(function()
GitSignsDeleteLn({ bg = p.diff_delete }), GitSignsDeleteLn({ bg = p.diff_delete }),
GitSignsCurrentLineBlame({ fg = p.fg_comment }), GitSignsCurrentLineBlame({ fg = p.fg_comment }),
-- Blink.cmp (Completion Menu)
BlinkCmpMenu({ bg = p.bg_light, fg = p.fg }),
BlinkCmpMenuBorder({ fg = p.border, bg = p.bg_light }),
BlinkCmpMenuSelection({ bg = p.bg_visual, fg = p.fg }),
BlinkCmpLabel({ fg = p.fg }),
BlinkCmpLabelDeprecated({ fg = p.fg_dark, gui = "strikethrough" }),
BlinkCmpLabelMatch({ fg = p.function_call, gui = "bold" }),
BlinkCmpLabelDetail({ fg = p.fg_comment }),
BlinkCmpLabelDescription({ fg = p.fg_comment }),
BlinkCmpKind({ fg = p.type_name }),
BlinkCmpKindText({ fg = p.fg }),
BlinkCmpKindMethod({ fg = p.function_call }),
BlinkCmpKindFunction({ fg = p.function_call }),
BlinkCmpKindConstructor({ fg = p.function_call }),
BlinkCmpKindField({ fg = p.member_variable }),
BlinkCmpKindVariable({ fg = p.fg }),
BlinkCmpKindClass({ fg = p.type_name }),
BlinkCmpKindInterface({ fg = p.type_name }),
BlinkCmpKindModule({ fg = p.type_name }),
BlinkCmpKindProperty({ fg = p.member_variable }),
BlinkCmpKindUnit({ fg = p.number }),
BlinkCmpKindValue({ fg = p.constant }),
BlinkCmpKindEnum({ fg = p.type_name }),
BlinkCmpKindKeyword({ fg = p.keyword }),
BlinkCmpKindSnippet({ fg = p.string }),
BlinkCmpKindColor({ fg = p.number }),
BlinkCmpKindFile({ fg = p.fg }),
BlinkCmpKindReference({ fg = p.number }),
BlinkCmpKindFolder({ fg = p.number }),
BlinkCmpKindEnumMember({ fg = p.constant }),
BlinkCmpKindConstant({ fg = p.constant }),
BlinkCmpKindStruct({ fg = p.type_name }),
BlinkCmpKindEvent({ fg = p.keyword }),
BlinkCmpKindOperator({ fg = p.fg }),
BlinkCmpKindTypeParameter({ fg = p.type_name }),
BlinkCmpDoc({ bg = p.bg_light, fg = p.fg }),
BlinkCmpDocBorder({ fg = p.border, bg = p.bg_light }),
BlinkCmpDocCursorLine({ bg = p.bg_current_line }),
BlinkCmpSignatureHelp({ bg = p.bg_light, fg = p.fg }),
BlinkCmpSignatureHelpBorder({ fg = p.border, bg = p.bg_light }),
BlinkCmpSignatureHelpActiveParameter({ fg = p.function_call, gui = "bold" }),
-- nvim-cmp (Alternative Completion)
CmpItemAbbr({ fg = p.fg }),
CmpItemAbbrDeprecated({ fg = p.fg_dark, gui = "strikethrough" }),
CmpItemAbbrMatch({ fg = p.function_call, gui = "bold" }),
CmpItemAbbrMatchFuzzy({ fg = p.function_call }),
CmpItemKind({ fg = p.type_name }),
CmpItemKindText({ fg = p.fg }),
CmpItemKindMethod({ fg = p.function_call }),
CmpItemKindFunction({ fg = p.function_call }),
CmpItemKindConstructor({ fg = p.function_call }),
CmpItemKindField({ fg = p.member_variable }),
CmpItemKindVariable({ fg = p.fg }),
CmpItemKindClass({ fg = p.type_name }),
CmpItemKindInterface({ fg = p.type_name }),
CmpItemKindModule({ fg = p.type_name }),
CmpItemKindProperty({ fg = p.member_variable }),
CmpItemKindUnit({ fg = p.number }),
CmpItemKindValue({ fg = p.constant }),
CmpItemKindEnum({ fg = p.type_name }),
CmpItemKindKeyword({ fg = p.keyword }),
CmpItemKindSnippet({ fg = p.string }),
CmpItemKindColor({ fg = p.number }),
CmpItemKindFile({ fg = p.fg }),
CmpItemKindReference({ fg = p.number }),
CmpItemKindFolder({ fg = p.number }),
CmpItemKindEnumMember({ fg = p.constant }),
CmpItemKindConstant({ fg = p.constant }),
CmpItemKindStruct({ fg = p.type_name }),
CmpItemKindEvent({ fg = p.keyword }),
CmpItemKindOperator({ fg = p.fg }),
CmpItemKindTypeParameter({ fg = p.type_name }),
CmpItemMenu({ fg = p.fg_comment }),
-- Bufferline
BufferLineFill({ bg = p.bg_gutter }),
BufferLineBackground({ bg = p.bg_gutter, fg = p.fg_dark }),
BufferLineBufferVisible({ bg = p.bg_gutter, fg = p.fg }),
BufferLineBufferSelected({ bg = p.bg, fg = p.fg, gui = "bold" }),
BufferLineTab({ bg = p.bg_gutter, fg = p.fg_dark }),
BufferLineTabSelected({ bg = p.bg, fg = p.keyword, gui = "bold" }),
BufferLineTabSeparator({ fg = p.bg_gutter, bg = p.bg_gutter }),
BufferLineTabSeparatorSelected({ fg = p.bg, bg = p.bg }),
BufferLineIndicatorSelected({ fg = p.keyword, bg = p.bg }),
BufferLineCloseButton({ bg = p.bg_gutter, fg = p.fg_dark }),
BufferLineCloseButtonVisible({ bg = p.bg_gutter, fg = p.fg }),
BufferLineCloseButtonSelected({ bg = p.bg, fg = p.error }),
BufferLineModified({ bg = p.bg_gutter, fg = p.warning }),
BufferLineModifiedVisible({ bg = p.bg_gutter, fg = p.warning }),
BufferLineModifiedSelected({ bg = p.bg, fg = p.warning }),
BufferLineDuplicate({ bg = p.bg_gutter, fg = p.fg_dark, gui = "italic" }),
BufferLineDuplicateVisible({ bg = p.bg_gutter, fg = p.fg, gui = "italic" }),
BufferLineDuplicateSelected({ bg = p.bg, fg = p.fg, gui = "bold,italic" }),
BufferLineSeparator({ fg = p.bg_gutter, bg = p.bg_gutter }),
BufferLineSeparatorVisible({ fg = p.bg_gutter, bg = p.bg_gutter }),
BufferLineSeparatorSelected({ fg = p.bg, bg = p.bg }),
BufferLineError({ bg = p.bg_gutter, fg = p.error }),
BufferLineErrorDiagnostic({ bg = p.bg_gutter, fg = p.error }),
BufferLineWarning({ bg = p.bg_gutter, fg = p.warning }),
BufferLineWarningDiagnostic({ bg = p.bg_gutter, fg = p.warning }),
BufferLineInfo({ bg = p.bg_gutter, fg = p.info }),
BufferLineInfoDiagnostic({ bg = p.bg_gutter, fg = p.info }),
BufferLineHint({ bg = p.bg_gutter, fg = p.hint }),
BufferLineHintDiagnostic({ bg = p.bg_gutter, fg = p.hint }),
-- Noice (Command Line UI)
NoicePopup({ bg = p.bg_light, fg = p.fg }),
NoicePopupBorder({ fg = p.border, bg = p.bg_light }),
NoiceCmdline({ bg = p.bg_light, fg = p.fg }),
NoiceCmdlinePopup({ bg = p.bg_light, fg = p.fg }),
NoiceCmdlinePopupBorder({ fg = p.border, bg = p.bg_light }),
NoiceCmdlinePopupTitle({ fg = p.keyword, bg = p.bg_light, gui = "bold" }),
NoiceCmdlineIcon({ fg = p.keyword }),
NoiceCmdlineIconSearch({ fg = p.function_call }),
NoiceConfirm({ bg = p.bg_light, fg = p.fg }),
NoiceConfirmBorder({ fg = p.border, bg = p.bg_light }),
NoiceSplit({ bg = p.bg_light, fg = p.fg }),
NoiceSplitBorder({ fg = p.border, bg = p.bg_light }),
-- Lazy (Plugin Manager)
LazyNormal({ bg = p.bg_light, fg = p.fg }),
LazyButton({ bg = p.bg_darker, fg = p.fg }),
LazyButtonActive({ bg = p.bg_visual, fg = p.fg, gui = "bold" }),
LazyH1({ fg = p.keyword, gui = "bold" }),
LazyH2({ fg = p.function_call }),
LazyComment({ fg = p.fg_comment, gui = "italic" }),
LazyCommit({ fg = p.number }),
LazyCommitType({ fg = p.keyword }),
LazyDimmed({ fg = p.fg_dark }),
LazyProp({ fg = p.member_variable }),
LazyValue({ fg = p.string }),
LazyDir({ fg = p.number }),
LazyUrl({ fg = p.blue, gui = "underline" }),
LazySpecial({ fg = p.function_call }),
LazyReasonPlugin({ fg = p.keyword }),
LazyReasonRuntime({ fg = p.type_name }),
LazyReasonCmd({ fg = p.function_call }),
LazyReasonSource({ fg = p.number }),
LazyReasonFt({ fg = p.string }),
LazyReasonKeys({ fg = p.constant }),
LazyReasonEvent({ fg = p.warning }),
LazyReasonStart({ fg = p.hint }),
LazyProgressDone({ fg = p.hint, gui = "bold" }),
LazyProgressTodo({ fg = p.fg_dark }),
-- Which-Key
WhichKey({ fg = p.keyword, gui = "bold" }),
WhichKeyGroup({ fg = p.function_call }),
WhichKeyDesc({ fg = p.fg }),
WhichKeySeparator({ fg = p.fg_dark }),
WhichKeyFloat({ bg = p.bg_light }),
WhichKeyBorder({ fg = p.border, bg = p.bg_light }),
WhichKeyValue({ fg = p.string }),
-- Indent Blankline
IndentBlanklineChar({ fg = p.bg_darker }),
IndentBlanklineContextChar({ fg = p.fg_dark }),
IndentBlanklineContextStart({ gui = "underline", sp = p.fg_dark }),
IndentBlanklineSpaceChar({ fg = p.bg_darker }),
IndentBlanklineSpaceCharBlankline({ fg = p.bg_darker }),
IblIndent({ fg = p.bg_darker }),
IblScope({ fg = p.fg_dark }),
IblWhitespace({ fg = p.bg_darker }),
-- Neo-tree
NeoTreeNormal({ bg = p.bg, fg = p.fg }),
NeoTreeNormalNC({ bg = p.bg, fg = p.fg }),
NeoTreeDirectoryIcon({ fg = p.number }),
NeoTreeDirectoryName({ fg = p.fg }),
NeoTreeFileName({ fg = p.fg }),
NeoTreeFileNameOpened({ fg = p.number, gui = "bold" }),
NeoTreeFloatBorder({ fg = p.border, bg = p.bg_light }),
NeoTreeFloatTitle({ fg = p.keyword, bg = p.bg_light, gui = "bold" }),
NeoTreeGitAdded({ fg = p.hint }),
NeoTreeGitConflict({ fg = p.error }),
NeoTreeGitDeleted({ fg = p.error }),
NeoTreeGitIgnored({ fg = p.fg_dark }),
NeoTreeGitModified({ fg = p.warning }),
NeoTreeGitUnstaged({ fg = p.warning }),
NeoTreeGitUntracked({ fg = p.hint }),
NeoTreeGitStaged({ fg = p.hint }),
NeoTreeIndentMarker({ fg = p.bg_darker }),
NeoTreeRootName({ fg = p.keyword, gui = "bold" }),
NeoTreeSymbolicLinkTarget({ fg = p.blue }),
NeoTreeTitleBar({ fg = p.keyword, bg = p.bg_light, gui = "bold" }),
NeoTreeWindowsHidden({ fg = p.fg_dark }),
-- Trouble
TroubleNormal({ bg = p.bg_light, fg = p.fg }),
TroubleText({ fg = p.fg }),
TroubleCount({ fg = p.constant, gui = "bold" }),
TroubleCode({ fg = p.fg_comment }),
TroubleFile({ fg = p.number }),
TroubleDirectory({ fg = p.type_name }),
TroubleSource({ fg = p.fg_comment }),
TroubleLocation({ fg = p.fg_dark }),
TroubleIndent({ fg = p.bg_darker }),
TroubleFoldIcon({ fg = p.fg_dark }),
TroubleSignError({ fg = p.error }),
TroubleSignWarning({ fg = p.warning }),
TroubleSignInformation({ fg = p.info }),
TroubleSignHint({ fg = p.hint }),
TroubleError({ fg = p.error }),
TroubleWarning({ fg = p.warning }),
TroubleInformation({ fg = p.info }),
TroubleHint({ fg = p.hint }),
-- Mason
MasonNormal({ bg = p.bg_light, fg = p.fg }),
MasonHeader({ fg = p.keyword, bg = p.bg_darker, gui = "bold" }),
MasonHeaderSecondary({ fg = p.function_call, bg = p.bg_darker, gui = "bold" }),
MasonHighlight({ fg = p.function_call }),
MasonHighlightBlock({ fg = p.bg, bg = p.function_call }),
MasonHighlightBlockBold({ fg = p.bg, bg = p.function_call, gui = "bold" }),
MasonHighlightSecondary({ fg = p.number }),
MasonHighlightBlockSecondary({ fg = p.bg, bg = p.number }),
MasonHighlightBlockBoldSecondary({ fg = p.bg, bg = p.number, gui = "bold" }),
MasonMuted({ fg = p.fg_dark }),
MasonMutedBlock({ fg = p.bg, bg = p.fg_dark }),
MasonMutedBlockBold({ fg = p.bg, bg = p.fg_dark, gui = "bold" }),
MasonError({ fg = p.error }),
MasonWarning({ fg = p.warning }),
MasonHeading({ fg = p.keyword, gui = "bold" }),
-- Alpha/Dashboard
AlphaHeader({ fg = p.function_call, gui = "bold" }),
AlphaButtons({ fg = p.keyword }),
AlphaShortcut({ fg = p.number, gui = "bold" }),
AlphaFooter({ fg = p.fg_comment, gui = "italic" }),
-- Hop/Leap (Jump Navigation)
HopNextKey({ fg = p.error, gui = "bold" }),
HopNextKey1({ fg = p.function_call, gui = "bold" }),
HopNextKey2({ fg = p.number }),
HopUnmatched({ fg = p.fg_dark }),
LeapMatch({ fg = p.error, gui = "bold,underline" }),
LeapLabelPrimary({ fg = p.error, gui = "bold" }),
LeapLabelSecondary({ fg = p.function_call, gui = "bold" }),
LeapBackdrop({ fg = p.fg_dark }),
-- Notify
NotifyERRORBorder({ fg = p.error }),
NotifyWARNBorder({ fg = p.warning }),
NotifyINFOBorder({ fg = p.info }),
NotifyDEBUGBorder({ fg = p.fg_dark }),
NotifyTRACEBorder({ fg = p.constant }),
NotifyERRORIcon({ fg = p.error }),
NotifyWARNIcon({ fg = p.warning }),
NotifyINFOIcon({ fg = p.info }),
NotifyDEBUGIcon({ fg = p.fg_dark }),
NotifyTRACEIcon({ fg = p.constant }),
NotifyERRORTitle({ fg = p.error, gui = "bold" }),
NotifyWARNTitle({ fg = p.warning, gui = "bold" }),
NotifyINFOTitle({ fg = p.info, gui = "bold" }),
NotifyDEBUGTitle({ fg = p.fg_dark, gui = "bold" }),
NotifyTRACETitle({ fg = p.constant, gui = "bold" }),
-- Diff -- Diff
DiffAdd({ bg = p.diff_add }), DiffAdd({ bg = p.diff_add }),
DiffChange({ bg = p.diff_modified }), DiffChange({ bg = p.diff_modified }),