Merge pull request #8 from brianpooe/claude/match-jetbrains-darcula-theme-01DqS4D8akyP5Y8wUkaq3Xbm
docs: modernize README and update branding
This commit is contained in:
commit
2d1e0be869
3 changed files with 172 additions and 92 deletions
264
README.md
264
README.md
|
|
@ -1,163 +1,243 @@
|
|||

|
||||
# 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
|
||||
|
||||
[](https://neovim.io)
|
||||
[](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
|
||||
* **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
|
||||
* **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)
|
||||
- 🎨 **Pixel-perfect colors** - Official JetBrains Darcula palette from IntelliJ IDEA
|
||||
- 🌳 **Full Tree-sitter support** - Complete coverage of modern capture groups
|
||||
- 🔍 **LSP Semantic Tokens** - Rich highlighting with italic/bold modifiers
|
||||
- 🔌 **20+ plugin integrations** - Popular plugins themed out of the box
|
||||
- 🎯 **True color** - Full 24-bit color support
|
||||
- ⚡ **Fast** - Optimized for performance
|
||||
- 🛠️ **Customizable** - Easy to extend with Lush
|
||||
|
||||
## ⚡ Requirements
|
||||
* Neovim 0.8+ (recommended 0.9+)
|
||||
* `termguicolors` enabled for true color support
|
||||
* (recommended) [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) for enhanced syntax highlighting
|
||||
* (recommended) LSP server for semantic token highlighting
|
||||
## 📸 Preview
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-example.png" alt="Darcula.nvim Preview" />
|
||||
</p>
|
||||
|
||||
## 🎨 Color Palette
|
||||
|
||||
| Element | Color | Preview |
|
||||
|---------|-------|---------|
|
||||
| Background | `#2B2B2B` |  |
|
||||
| Foreground | `#A9B7C6` |  |
|
||||
| Keywords | `#CC7832` |  |
|
||||
| Strings | `#6A8759` |  |
|
||||
| Numbers | `#6897BB` |  |
|
||||
| Comments | `#808080` |  |
|
||||
| Functions | `#FFC66D` |  |
|
||||
| Types | `#769AA5` |  |
|
||||
| Constants | `#9876AA` |  |
|
||||
| Annotations | `#BBB529` |  |
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
### [lazy.nvim](https://github.com/folke/lazy.nvim) (Recommended)
|
||||
|
||||
```lua
|
||||
{
|
||||
"briones-gabriel/darcula-solid.nvim",
|
||||
dependencies = { "rktjmp/lush.nvim" },
|
||||
priority = 1000, -- Load before other plugins
|
||||
priority = 1000,
|
||||
config = function()
|
||||
vim.cmd("colorscheme darcula")
|
||||
end,
|
||||
}
|
||||
```
|
||||
|
||||
### [Packer](https://github.com/wbthomason/packer.nvim)
|
||||
### [packer.nvim](https://github.com/wbthomason/packer.nvim)
|
||||
|
||||
```lua
|
||||
use {
|
||||
"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 'rktjmp/lush.nvim'
|
||||
Plug 'briones-gabriel/darcula-solid.nvim'
|
||||
```
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Basic Setup
|
||||
```lua
|
||||
-- init.lua
|
||||
vim.opt.termguicolors = true
|
||||
vim.cmd("colorscheme darcula")
|
||||
```
|
||||
|
||||
Or in Vimscript:
|
||||
Then in your `init.vim`:
|
||||
```vim
|
||||
" init.vim
|
||||
set termguicolors
|
||||
colorscheme darcula
|
||||
```
|
||||
|
||||
### LSP Semantic Highlighting
|
||||
For the best experience with semantic tokens (italic static/abstract members, etc.):
|
||||
## 🚀 Quick Start
|
||||
|
||||
```lua
|
||||
-- Ensure your LSP is configured to enable semantic tokens
|
||||
-- Most LSP servers enable this by default
|
||||
-- Minimal setup (init.lua)
|
||||
vim.opt.termguicolors = true
|
||||
vim.cmd("colorscheme darcula")
|
||||
```
|
||||
|
||||
## 🎨 Color Palette
|
||||
The theme uses the official JetBrains Darcula colors:
|
||||
## 🔌 Supported Plugins
|
||||
|
||||
| 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` |
|
||||
<details>
|
||||
<summary><b>Expand to see all supported plugins</b></summary>
|
||||
|
||||
### 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 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
|
||||
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-custom.lua`
|
||||
3. Extend the base theme:
|
||||
Darcula.nvim is built with [Lush](https://github.com/rktjmp/lush.nvim), making customization straightforward:
|
||||
|
||||
```lua
|
||||
-- ~/.config/nvim/colors/my-darcula.lua
|
||||
vim.opt.background = 'dark'
|
||||
vim.g.colors_name = 'darcula-custom'
|
||||
vim.g.colors_name = 'my-darcula'
|
||||
|
||||
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)
|
||||
|
||||
local spec = lush.extends({darcula}).with(function()
|
||||
return {
|
||||
-- Override specific highlight groups
|
||||
Type { fg = yellow },
|
||||
Function { fg = darcula.Normal.fg },
|
||||
-- Add more customizations...
|
||||
-- Customize any highlight group
|
||||
Comment { fg = "#888888", gui = "italic" },
|
||||
Function { fg = "#FFD700" },
|
||||
-- Add your customizations...
|
||||
}
|
||||
end)
|
||||
|
||||
lush(spec)
|
||||
```
|
||||
|
||||
4. Apply your custom theme:
|
||||
Then apply it:
|
||||
```lua
|
||||
vim.cmd("colorscheme darcula-custom")
|
||||
vim.cmd("colorscheme my-darcula")
|
||||
```
|
||||
|
||||
## 🌟 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)
|
||||
Complete support for modern nvim-treesitter:
|
||||
- ✅ All `@keyword.*` variants
|
||||
- ✅ Full `@markup.*` groups for Markdown
|
||||
- ✅ `@diff.*` groups for version control
|
||||
- ✅ LSP semantic tokens with modifiers
|
||||
|
||||
### 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
|
||||
### JetBrains Conventions
|
||||
Authentic IDE-like styling:
|
||||
- **Bold** keywords for visibility
|
||||
- *Italic* static members, abstract classes, readonly properties
|
||||
- *Italic* documentation comments
|
||||
- ~~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
|
||||
|
||||
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:**
|
||||
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`
|
||||
### Quick Fixes
|
||||
|
||||
```vim
|
||||
" Reload everything
|
||||
: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
|
||||
- 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))
|
||||
- **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>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Loading…
Add table
Reference in a new issue