- Add config.lua for comprehensive configuration options (transparent, italic_comments, bold_keywords, bold_functions, bold_types, terminal_colors) - Add highlights.lua with 500+ highlight groups for 30+ plugins (Telescope, NvimTree, Neo-tree, GitSigns, nvim-cmp, Lazy.nvim, Mason, etc.) - Add colors/ directory for :colorscheme command support - Add terminal colors (16-color palette for :terminal) - Add test suite (test/test_colors.lua) - Add development tools (selene.toml, stylua.toml, vim.toml) - Add CHANGELOG.md following Keep a Changelog format - Fix colors.lua not being used by init.lua - Fix setup(opts) not applying configuration options - Fix README referencing non-existent files - Update documentation with accurate file structure and API docs
315 lines
8.1 KiB
Markdown
315 lines
8.1 KiB
Markdown
# CargDev-Cyberpunk.nvim
|
|
|
|
A vibrant, high-contrast Neovim color scheme crafted for developers who thrive in bold, electrifying visuals. Built with TypeScript support and atomic design principles in mind, this theme delivers blazing neon tones and a cyberpunk aesthetic that maximizes focus and visual impact.
|
|
|
|
## Features
|
|
|
|
- **High-Contrast Neon Colors**: Hot pink keywords, electric purple types, vibrant cyan accents, and lush green functions
|
|
- **Cyberpunk Aesthetic**: Deep blue backgrounds with neon accents for maximum visual impact
|
|
- **TypeScript Support**: Comprehensive LSP and Treesitter highlighting for TypeScript/JavaScript
|
|
- **Configurable**: Transparent background, italic/bold toggles, and custom color overrides
|
|
- **Plugin Integration**: Native support for Telescope, NvimTree, Neo-tree, GitSigns, nvim-cmp, Lazy.nvim, and more
|
|
- **Terminal Colors**: Full 16-color terminal palette for `:terminal`
|
|
- **LSP Integration**: Full support for Language Server Protocol highlighting and semantic tokens
|
|
- **Treesitter Support**: Advanced syntax highlighting with Treesitter
|
|
|
|
## Screenshots
|
|
|
|
### TypeScript
|
|

|
|
|
|
### TypeScript React (TSX)
|
|

|
|
|
|
### CSS
|
|

|
|
|
|
### JSON
|
|

|
|
|
|
## Color Palette
|
|
|
|
### Syntax Colors
|
|
| Element | Color | Preview |
|
|
|---------|-------|---------|
|
|
| Keywords | `#FF79C6` | Control flow and declarations (bold) |
|
|
| Functions | `#50FA7B` | Function calls and definitions (bold) |
|
|
| Strings | `#FFFFFF` | String literals |
|
|
| Numbers | `#FFB86C` | Numeric literals and constants |
|
|
| Types | `#BD93F9` | Type annotations and interfaces (bold) |
|
|
| Variables | `#BD93F9` | Variable names |
|
|
| Properties | `#50FA7B` | Object properties (bold) |
|
|
| Comments | `#666666` | Code comments (italic) |
|
|
|
|
### Background Colors
|
|
| Element | Color | Description |
|
|
|---------|-------|-------------|
|
|
| Primary | `#002B36` | Main background |
|
|
| Secondary | `#003B46` | Sidebars and floating windows |
|
|
| Tertiary | `#004B56` | Selected tabs and highlights |
|
|
| Cursor Line | `#112233` | Current line highlight |
|
|
| Selection | `#44475A` | Visual selection |
|
|
|
|
### Diagnostic Colors
|
|
| Type | Color |
|
|
|------|-------|
|
|
| Error | `#FF5555` |
|
|
| Warning | `#FFB86C` |
|
|
| Info | `#8BE9FD` |
|
|
| Hint | `#50FA7B` |
|
|
|
|
## Installation
|
|
|
|
### Using Lazy.nvim (Recommended)
|
|
|
|
```lua
|
|
{
|
|
"yourusername/cargdev-cyberpunk.nvim",
|
|
lazy = false,
|
|
priority = 1000,
|
|
config = function()
|
|
require("cargdev-cyberpunk").setup()
|
|
end,
|
|
}
|
|
```
|
|
|
|
### Using Packer
|
|
|
|
```lua
|
|
use {
|
|
"yourusername/cargdev-cyberpunk.nvim",
|
|
config = function()
|
|
require("cargdev-cyberpunk").setup()
|
|
end
|
|
}
|
|
```
|
|
|
|
### Using vim-plug
|
|
|
|
```vim
|
|
Plug 'yourusername/cargdev-cyberpunk.nvim'
|
|
```
|
|
|
|
Then in your Lua config:
|
|
|
|
```lua
|
|
require("cargdev-cyberpunk").setup()
|
|
```
|
|
|
|
### Manual Installation
|
|
|
|
Clone this repository to your Neovim plugins directory:
|
|
|
|
```bash
|
|
git clone https://github.com/yourusername/cargdev-cyberpunk.nvim \
|
|
~/.local/share/nvim/site/pack/plugins/start/cargdev-cyberpunk.nvim
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Basic Setup
|
|
|
|
```lua
|
|
require("cargdev-cyberpunk").setup()
|
|
```
|
|
|
|
### Using Colorscheme Command
|
|
|
|
After installation, you can load the colorscheme with:
|
|
|
|
```vim
|
|
:colorscheme cargdev-cyberpunk
|
|
```
|
|
|
|
### Advanced Configuration
|
|
|
|
```lua
|
|
require("cargdev-cyberpunk").setup({
|
|
-- Enable transparent background
|
|
transparent = false,
|
|
|
|
-- Style options
|
|
italic_comments = true,
|
|
bold_keywords = true,
|
|
bold_functions = true,
|
|
bold_types = true,
|
|
|
|
-- Enable terminal colors
|
|
terminal_colors = true,
|
|
|
|
-- Custom color overrides
|
|
colors = {
|
|
syntax = {
|
|
keyword = "#FF0000", -- Make keywords red
|
|
},
|
|
bg = {
|
|
primary = "#000000", -- Pure black background
|
|
},
|
|
},
|
|
})
|
|
```
|
|
|
|
### Configuration Options
|
|
|
|
| Option | Type | Default | Description |
|
|
|--------|------|---------|-------------|
|
|
| `transparent` | boolean | `false` | Enable transparent background |
|
|
| `italic_comments` | boolean | `true` | Use italic style for comments |
|
|
| `bold_keywords` | boolean | `true` | Use bold style for keywords |
|
|
| `bold_functions` | boolean | `true` | Use bold style for functions |
|
|
| `bold_types` | boolean | `true` | Use bold style for types |
|
|
| `terminal_colors` | boolean | `true` | Set terminal colors for `:terminal` |
|
|
| `colors` | table | `{}` | Custom color overrides |
|
|
|
|
## Plugin Support
|
|
|
|
CargDev-Cyberpunk includes native highlight groups for these plugins:
|
|
|
|
- **Telescope**: Search and picker UI
|
|
- **NvimTree / Neo-tree**: File explorers
|
|
- **GitSigns**: Git diff indicators
|
|
- **nvim-cmp**: Completion menu
|
|
- **indent-blankline**: Indentation guides
|
|
- **which-key**: Keybinding hints
|
|
- **Lazy.nvim**: Plugin manager UI
|
|
- **Mason**: LSP/DAP installer UI
|
|
- **bufferline.nvim**: Buffer tabs
|
|
- **lualine.nvim**: Status line
|
|
- **nvim-notify**: Notification popups
|
|
- **noice.nvim**: UI replacement
|
|
- **trouble.nvim**: Diagnostics list
|
|
- **dashboard-nvim / alpha-nvim**: Start screen
|
|
- **Copilot**: AI suggestions
|
|
|
|
## Architecture
|
|
|
|
The plugin follows a modular structure:
|
|
|
|
```
|
|
lua/cargdev-cyberpunk/
|
|
├── init.lua # Main entry point and setup
|
|
├── colors.lua # Color palette definitions
|
|
├── config.lua # Configuration management
|
|
├── highlights.lua # Highlight group definitions
|
|
└── plugin.lua # Plugin metadata
|
|
|
|
colors/
|
|
└── cargdev-cyberpunk.lua # Colorscheme command file
|
|
|
|
test/
|
|
└── test_colors.lua # Test suite
|
|
```
|
|
|
|
### Modules
|
|
|
|
- **`init.lua`**: Main setup, load, and apply functions
|
|
- **`colors.lua`**: Centralized color palette with override support
|
|
- **`config.lua`**: Configuration defaults and user options
|
|
- **`highlights.lua`**: All highlight group definitions organized by category
|
|
- **`plugin.lua`**: Plugin metadata (name, version, author)
|
|
|
|
## TypeScript Support
|
|
|
|
This color scheme includes extensive TypeScript support:
|
|
|
|
- **LSP Integration**: Full support for TypeScript Language Server highlighting
|
|
- **Semantic Tokens**: Enhanced highlighting with LSP semantic tokens
|
|
- **Treesitter**: Advanced syntax highlighting with Treesitter
|
|
- **Type Annotations**: Special highlighting for type annotations and interfaces
|
|
- **Import/Export**: Distinct colors for import and export statements
|
|
- **Decorators**: Support for TypeScript decorators
|
|
- **Generics**: Proper highlighting for generic types
|
|
|
|
## Requirements
|
|
|
|
- Neovim 0.8.0 or higher
|
|
- `termguicolors` enabled (automatically set by the plugin)
|
|
- Treesitter (recommended for best experience)
|
|
- LSP support (recommended for TypeScript features)
|
|
|
|
## Testing
|
|
|
|
Run the test suite:
|
|
|
|
```bash
|
|
nvim --headless -c "lua dofile('test/test_colors.lua')"
|
|
```
|
|
|
|
Or from within Neovim:
|
|
|
|
```lua
|
|
:lua dofile('test/test_colors.lua')
|
|
```
|
|
|
|
## API
|
|
|
|
### Functions
|
|
|
|
```lua
|
|
local cyberpunk = require("cargdev-cyberpunk")
|
|
|
|
-- Setup with options
|
|
cyberpunk.setup(opts)
|
|
|
|
-- Load/reload the colorscheme
|
|
cyberpunk.load()
|
|
|
|
-- Apply highlights (useful for refreshing)
|
|
cyberpunk.apply_highlights()
|
|
|
|
-- Get the current color palette
|
|
local colors = cyberpunk.get_colors()
|
|
```
|
|
|
|
### Accessing Colors
|
|
|
|
```lua
|
|
local colors = require("cargdev-cyberpunk.colors")
|
|
|
|
-- Get the palette
|
|
local palette = colors.palette
|
|
|
|
-- Override colors
|
|
colors.override({
|
|
syntax = {
|
|
keyword = "#FF0000",
|
|
},
|
|
})
|
|
```
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
|
### Development Setup
|
|
|
|
1. Fork the repository
|
|
2. Clone your fork locally
|
|
3. Make your changes
|
|
4. Run tests: `nvim --headless -c "lua dofile('test/test_colors.lua')"`
|
|
5. Submit a pull request
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Acknowledgments
|
|
|
|
- **Neovim Community**: For the excellent plugin ecosystem
|
|
- **Dracula Theme**: Inspiration for some color choices
|
|
- **Cyberpunk Aesthetic**: Inspired by the vibrant neon colors of cyberpunk culture
|
|
|
|
## Support
|
|
|
|
If you encounter any issues or have questions:
|
|
|
|
1. Check the [Issues](https://github.com/yourusername/cargdev-cyberpunk.nvim/issues) page
|
|
2. Create a new issue with detailed information
|
|
3. Include your Neovim version and configuration
|
|
|
|
---
|
|
|
|
**Enjoy coding with vibrant colors!**
|
|
|
|
*"If I squint at this theme, I should feel like Tron is about to compile!"*
|