A color scheme for those who love the IntelliJ style but prefer the Neovims feel.
Find a file
2025-11-15 15:11:51 +02:00
colors refactor!: rename theme from darcula-solid to darcula 2025-11-15 13:10:08 +00:00
lua/lush_theme refactor!: rename theme from darcula-solid to darcula 2025-11-15 13:10:08 +00:00
resources Added more resources 2021-05-21 20:17:45 -03:00
DEBUGGING.md refactor!: rename theme from darcula-solid to darcula 2025-11-15 13:10:08 +00:00
README.md refactor!: rename theme from darcula-solid to darcula 2025-11-15 13:10:08 +00:00

Darcula.nvim

Darcula.nvim

A high-fidelity Neovim color scheme that perfectly matches the official JetBrains Darcula theme. Built with Lush for easy customization and comprehensive plugin support.

Features

  • Pixel-perfect JetBrains Darcula colors - Official color palette from IntelliJ IDEA
  • Full nvim-treesitter compatibility - Complete support for all modern Tree-sitter capture groups
  • LSP Semantic Tokens - Enhanced highlighting with italic/bold modifiers for static, abstract, and readonly
  • 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

Requirements

  • Neovim 0.8+ (recommended 0.9+)
  • termguicolors enabled for true color support
  • (recommended) nvim-treesitter for enhanced syntax highlighting
  • (recommended) LSP server for semantic token highlighting

📦 Installation

{
  "briones-gabriel/darcula-solid.nvim",
  dependencies = { "rktjmp/lush.nvim" },
  priority = 1000, -- Load before other plugins
  config = function()
    vim.cmd("colorscheme darcula")
  end,
}

Packer

use {
  "briones-gabriel/darcula-solid.nvim",
  requires = "rktjmp/lush.nvim"
}

vim-plug

Plug 'rktjmp/lush.nvim'
Plug 'briones-gabriel/darcula-solid.nvim'

🔧 Configuration

Basic Setup

-- init.lua
vim.opt.termguicolors = true
vim.cmd("colorscheme darcula")

Or in Vimscript:

" init.vim
set termguicolors
colorscheme darcula

LSP Semantic Highlighting

For the best experience with semantic tokens (italic static/abstract members, etc.):

-- 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, 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-custom.lua
  3. Extend the base theme:
vim.opt.background = 'dark'
vim.g.colors_name = 'darcula-custom'

local lush = require('lush')
local darcula = require('lush_theme.darcula')
local spec = lush.extends({darcula}).with(function()
  -- Your modifications go here
  local yellow = lush.hsl(37, 100, 71)

  return {
    -- Override specific highlight groups
    Type { fg = yellow },
    Function { fg = darcula.Normal.fg },
    -- Add more customizations...
  }
end)

lush(spec)
  1. Apply your custom theme:
vim.cmd("colorscheme darcula-custom")

🌟 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

🐛 Troubleshooting

If certain elements aren't highlighting correctly (e.g., this keyword appears purple instead of orange, or Angular components appear white), see DEBUGGING.md for detailed troubleshooting steps.

Quick fixes:

  1. Reload the theme: :colorscheme darcula
  2. Check what highlight is applied: :Inspect (cursor on element)
  3. Ensure tree-sitter parsers are installed: :TSInstall typescript javascript html
  4. Restart LSP: :LspRestart

🙏 Credits

  • Original theme inspired by the official JetBrains Darcula theme
  • Thanks to @rorystephenson for the customization idea
  • Built with Lush by @rktjmp

Preview

darcula-solid