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

docs: modernize README and update branding
This commit is contained in:
Brian Pooe 2025-11-15 15:16:43 +02:00 committed by GitHub
commit 2d1e0be869
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 172 additions and 92 deletions

264
README.md
View file

@ -1,163 +1,243 @@
![Darcula.nvim](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-logo.png)
# Darcula.nvim # Darcula.nvim
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.
> A pixel-perfect Neovim port of the iconic JetBrains Darcula theme
[![Neovim](https://img.shields.io/badge/Neovim-0.8+-green.svg?style=flat-square&logo=Neovim&logoColor=white)](https://neovim.io)
[![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)
<p align="center">
<img src="https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-logo.png" alt="Darcula.nvim" />
</p>
High-fidelity color scheme that matches the official JetBrains Darcula theme. Built with [Lush](https://github.com/rktjmp/lush.nvim) for extensibility and comprehensive plugin support.
## ✨ Features ## ✨ 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 - 🎨 **Pixel-perfect colors** - Official JetBrains Darcula palette from IntelliJ IDEA
* **Completion**: [blink.cmp](https://github.com/Saghen/blink.cmp), [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) - 🌳 **Full Tree-sitter support** - Complete coverage of modern capture groups
* **File Explorers**: [nvim-tree](https://github.com/nvim-tree/nvim-tree.lua), [neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim) - 🔍 **LSP Semantic Tokens** - Rich highlighting with italic/bold modifiers
* **Fuzzy Finder**: [Telescope](https://github.com/nvim-telescope/telescope.nvim) - 🔌 **20+ plugin integrations** - Popular plugins themed out of the box
* **Git**: [GitSigns](https://github.com/lewis6991/gitsigns.nvim), [Neogit](https://github.com/TimUntersberger/neogit) - 🎯 **True color** - Full 24-bit color support
* **UI**: [Noice](https://github.com/folke/noice.nvim), [Bufferline](https://github.com/akinsho/bufferline.nvim), [Which-Key](https://github.com/folke/which-key.nvim) - ⚡ **Fast** - Optimized for performance
* **Utilities**: [Lazy](https://github.com/folke/lazy.nvim), [Mason](https://github.com/williamboman/mason.nvim), [Trouble](https://github.com/folke/trouble.nvim) - 🛠️ **Customizable** - Easy to extend with Lush
* **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 ## 📸 Preview
* Neovim 0.8+ (recommended 0.9+)
* `termguicolors` enabled for true color support <p align="center">
* (recommended) [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) for enhanced syntax highlighting <img src="https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-example.png" alt="Darcula.nvim Preview" />
* (recommended) LSP server for semantic token highlighting </p>
## 🎨 Color Palette
| Element | Color | Preview |
|---------|-------|---------|
| Background | `#2B2B2B` | ![#2B2B2B](https://via.placeholder.com/100x30/2B2B2B/2B2B2B.png) |
| Foreground | `#A9B7C6` | ![#A9B7C6](https://via.placeholder.com/100x30/A9B7C6/A9B7C6.png) |
| Keywords | `#CC7832` | ![#CC7832](https://via.placeholder.com/100x30/CC7832/CC7832.png) |
| Strings | `#6A8759` | ![#6A8759](https://via.placeholder.com/100x30/6A8759/6A8759.png) |
| Numbers | `#6897BB` | ![#6897BB](https://via.placeholder.com/100x30/6897BB/6897BB.png) |
| Comments | `#808080` | ![#808080](https://via.placeholder.com/100x30/808080/808080.png) |
| Functions | `#FFC66D` | ![#FFC66D](https://via.placeholder.com/100x30/FFC66D/FFC66D.png) |
| Types | `#769AA5` | ![#769AA5](https://via.placeholder.com/100x30/769AA5/769AA5.png) |
| Constants | `#9876AA` | ![#9876AA](https://via.placeholder.com/100x30/9876AA/9876AA.png) |
| Annotations | `#BBB529` | ![#BBB529](https://via.placeholder.com/100x30/BBB529/BBB529.png) |
## 📦 Installation ## 📦 Installation
### [lazy.nvim](https://github.com/folke/lazy.nvim) (Recommended) ### [lazy.nvim](https://github.com/folke/lazy.nvim) (Recommended)
```lua ```lua
{ {
"briones-gabriel/darcula-solid.nvim", "briones-gabriel/darcula-solid.nvim",
dependencies = { "rktjmp/lush.nvim" }, dependencies = { "rktjmp/lush.nvim" },
priority = 1000, -- Load before other plugins priority = 1000,
config = function() config = function()
vim.cmd("colorscheme darcula") vim.cmd("colorscheme darcula")
end, end,
} }
``` ```
### [Packer](https://github.com/wbthomason/packer.nvim) ### [packer.nvim](https://github.com/wbthomason/packer.nvim)
```lua ```lua
use { use {
"briones-gabriel/darcula-solid.nvim", "briones-gabriel/darcula-solid.nvim",
requires = "rktjmp/lush.nvim" requires = "rktjmp/lush.nvim",
config = function()
vim.cmd("colorscheme darcula")
end,
} }
``` ```
### [vim-plug](https://github.com/junegunn/vim-plug) ### [vim-plug](https://github.com/junegunn/vim-plug)
```vim ```vim
Plug 'rktjmp/lush.nvim' Plug 'rktjmp/lush.nvim'
Plug 'briones-gabriel/darcula-solid.nvim' Plug 'briones-gabriel/darcula-solid.nvim'
``` ```
## 🔧 Configuration Then in your `init.vim`:
### Basic Setup
```lua
-- init.lua
vim.opt.termguicolors = true
vim.cmd("colorscheme darcula")
```
Or in Vimscript:
```vim ```vim
" init.vim
set termguicolors set termguicolors
colorscheme darcula colorscheme darcula
``` ```
### LSP Semantic Highlighting ## 🚀 Quick Start
For the best experience with semantic tokens (italic static/abstract members, etc.):
```lua ```lua
-- Ensure your LSP is configured to enable semantic tokens -- Minimal setup (init.lua)
-- Most LSP servers enable this by default vim.opt.termguicolors = true
vim.cmd("colorscheme darcula")
``` ```
## 🎨 Color Palette ## 🔌 Supported Plugins
The theme uses the official JetBrains Darcula colors:
| Element | Color | Hex | <details>
|---------|-------|-----| <summary><b>Expand to see all supported plugins</b></summary>
| Background | Dark Gray | `#2B2B2B` |
| Foreground | Light Gray-Blue | `#A9B7C6` | ### Completion
| Keywords | Orange | `#CC7832` | - [blink.cmp](https://github.com/Saghen/blink.cmp)
| Strings | Green | `#6A8759` | - [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
| Numbers | Blue | `#6897BB` |
| Comments | Gray | `#808080` | ### File Explorers
| Functions | Yellow | `#FFC66D` | - [nvim-tree](https://github.com/nvim-tree/nvim-tree.lua)
| Types/Classes | Teal-Blue | `#769AA5` | - [neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim)
| Constants | Purple | `#9876AA` |
| Annotations | Olive-Yellow | `#BBB529` | ### Fuzzy Finders
- [Telescope](https://github.com/nvim-telescope/telescope.nvim)
### Git Integration
- [GitSigns](https://github.com/lewis6991/gitsigns.nvim)
- [Neogit](https://github.com/TimUntersberger/neogit)
### UI Enhancements
- [Noice](https://github.com/folke/noice.nvim)
- [Bufferline](https://github.com/akinsho/bufferline.nvim)
- [Which-Key](https://github.com/folke/which-key.nvim)
- [alpha-nvim](https://github.com/goolord/alpha-nvim)
### Development Tools
- [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)
### Other
- [nvim-notify](https://github.com/rcarriga/nvim-notify)
- [indent-blankline](https://github.com/lukas-reineke/indent-blankline.nvim)
</details>
## 🛠️ Customization ## 🛠️ 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` Darcula.nvim is built with [Lush](https://github.com/rktjmp/lush.nvim), making customization straightforward:
2. Create a custom theme file: `~/.config/nvim/colors/darcula-custom.lua`
3. Extend the base theme:
```lua ```lua
-- ~/.config/nvim/colors/my-darcula.lua
vim.opt.background = 'dark' vim.opt.background = 'dark'
vim.g.colors_name = 'darcula-custom' vim.g.colors_name = 'my-darcula'
local lush = require('lush') local lush = require('lush')
local darcula = require('lush_theme.darcula') local darcula = require('lush_theme.darcula')
local spec = lush.extends({darcula}).with(function()
-- Your modifications go here
local yellow = lush.hsl(37, 100, 71)
local spec = lush.extends({darcula}).with(function()
return { return {
-- Override specific highlight groups -- Customize any highlight group
Type { fg = yellow }, Comment { fg = "#888888", gui = "italic" },
Function { fg = darcula.Normal.fg }, Function { fg = "#FFD700" },
-- Add more customizations... -- Add your customizations...
} }
end) end)
lush(spec) lush(spec)
``` ```
4. Apply your custom theme: Then apply it:
```lua ```lua
vim.cmd("colorscheme darcula-custom") vim.cmd("colorscheme my-darcula")
``` ```
## 🌟 Highlights ## 🌟 Highlights
### Tree-sitter Support ### Tree-sitter Support
Full support for all modern nvim-treesitter capture groups including: Complete support for modern nvim-treesitter:
- All `@keyword.*` variants (coroutine, import, type, modifier, etc.) - All `@keyword.*` variants
- Complete `@markup.*` groups for Markdown and other markup languages - ✅ Full `@markup.*` groups for Markdown
- `@diff.*` groups for version control - `@diff.*` groups for version control
- LSP semantic tokens with modifiers (static, abstract, readonly, deprecated) - LSP semantic tokens with modifiers
### Italic & Bold Refinements ### JetBrains Conventions
Following JetBrains conventions: Authentic IDE-like styling:
- **Bold** keywords for better visibility - **Bold** keywords for visibility
- **Italic** for static members, abstract classes, and readonly properties - *Italic* static members, abstract classes, readonly properties
- **Italic** documentation comments - *Italic* documentation comments
- **Strikethrough** for deprecated items - ~~Strikethrough~~ deprecated items
### Language-Specific Features
- **TypeScript/JavaScript**: Distinct `this` keyword (orange vs purple member variables)
- **Angular**: Custom component highlighting in templates
- **React/TSX/JSX**: Component name highlighting
- **HTML**: Web components and custom elements support
## 🐛 Troubleshooting ## 🐛 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](DEBUGGING.md) for detailed troubleshooting steps. Having issues? See the [**Debugging Guide**](DEBUGGING.md) for detailed troubleshooting.
**Quick fixes:** ### Quick Fixes
1. Reload the theme: `:colorscheme darcula`
2. Check what highlight is applied: `:Inspect` (cursor on element) ```vim
3. Ensure tree-sitter parsers are installed: `:TSInstall typescript javascript html` " Reload everything
4. Restart LSP: `:LspRestart` :colorscheme darcula
:LspRestart
:write | edit
```
Check what's highlighting an element:
```vim
:Inspect
```
Ensure parsers are installed:
```vim
:TSInstall typescript javascript html tsx jsx
```
## 💡 Tips
- **LSP Semantic Tokens**: Enable for best results (most LSPs enable by default)
- **True Colors**: Ensure your terminal supports 24-bit color
- **Font Ligatures**: Use a font with ligatures (JetBrains Mono, Fira Code, etc.)
## 📚 Requirements
- Neovim ≥ 0.8 (0.9+ recommended)
- `termguicolors` enabled
- [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) (recommended)
- LSP server (recommended)
## 🤝 Contributing
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
- Improve documentation
## 📄 License
MIT License - see [LICENSE](LICENSE) for details
## 🙏 Credits ## 🙏 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 - **Original Theme**: JetBrains Darcula ([official implementation](https://github.com/bulenkov/Darcula))
![darcula-solid](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-example.png) - **Framework**: [Lush](https://github.com/rktjmp/lush.nvim) by [@rktjmp](https://github.com/rktjmp)
- **Inspiration**: [@rorystephenson](https://github.com/rorystephenson)
---
<p align="center">
Made with ❤️ for Neovim
</p>

View file

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB