diff --git a/README.md b/README.md index 0f8e47a..d2aca19 100644 --- a/README.md +++ b/README.md @@ -1,163 +1,243 @@ -![Darcula.nvim](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-logo.png) # 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) + +

+ Darcula.nvim +

+ +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 + +

+ Darcula.nvim Preview +

+ +## 🎨 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 ### [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` | +
+Expand to see all 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 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) + +
## 🛠️ 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 -![darcula-solid](https://raw.githubusercontent.com/briones-gabriel/darcula-solid.nvim/main/resources/darcula-solid-example.png) +- **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) + +--- + +

+ Made with ❤️ for Neovim +

diff --git a/resources/darcula-solid-example.png b/resources/darcula-example.png similarity index 100% rename from resources/darcula-solid-example.png rename to resources/darcula-example.png diff --git a/resources/darcula-solid-logo.png b/resources/darcula-logo.png similarity index 100% rename from resources/darcula-solid-logo.png rename to resources/darcula-logo.png