Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/brenoprata10/nvim-highlight-colors

Highlight colors for neovim
https://github.com/brenoprata10/nvim-highlight-colors

colors neovim nvim plugin vim

Last synced: 11 days ago
JSON representation

Highlight colors for neovim

Awesome Lists containing this project

README

        

# nvim-highlight-colors

> Highlight colors within Neovim

Background highlights for hex, rgb, hsl, named colors, and CSS variables

## Features

- Realtime color highlighting
- Supports hex, rgb, hsl, CSS variables, and Tailwind CSS
- LSP support! For any LSP that supports `textDocument/documentColor` like [tailwindcss](https://github.com/tailwindlabs/tailwindcss-intellisense) and [csslsp](https://github.com/microsoft/vscode-css-languageservice)
- Multiple rendering modes: background, foreground, and virtual text

## Usage

Install via your preferred package manager:

```lua
'brenoprata10/nvim-highlight-colors'
```

Initialize the plugin:

```lua
-- Ensure termguicolors is enabled if not already
vim.opt.termguicolors = true

require('nvim-highlight-colors').setup({})
```

### `nvim-cmp` integration

```lua
require("cmp").setup({
... other configs
formatting = {
format = require("nvim-highlight-colors").format
}
})
```

or

```lua
require("cmp").setup({
... other configs
formatting = {
format = function(entry, item)
item = -- YOUR other configs come first
return require("nvim-highlight-colors").format(entry, item)
end
}
})
```

#### `lspkind` integration

The out of the box `format` function does not necessarily play nicely with `lspkind` and potentially other formatters provided by plugins and may require manual intervention. Here is an example of making the integration work nicely with `lspkind`:

```lua
require("cmp").setup({
... other configs
formatting = {
format = function(entry, item)
local color_item = require("nvim-highlight-colors").format(entry, { kind = item.kind })
item = require("lspkind").cmp_format({
-- any lspkind format settings here
})(entry, item)
if color_item.abbr_hl_group then
item.kind_hl_group = color_item.abbr_hl_group
item.kind = color_item.abbr
end
return item
end
}
})
```

## Options

```lua
require("nvim-highlight-colors").setup {
---Render style
---@usage 'background'|'foreground'|'virtual'
render = 'background',

---Set virtual symbol (requires render to be set to 'virtual')
virtual_symbol = '■',

---Set virtual symbol suffix (defaults to '')
virtual_symbol_prefix = '',

---Set virtual symbol suffix (defaults to ' ')
virtual_symbol_suffix = ' ',

---Set virtual symbol position()
---@usage 'inline'|'eol'|'eow'
---inline mimics VS Code style
---eol stands for `end of column` - Recommended to set `virtual_symbol_suffix = ''` when used.
---eow stands for `end of word` - Recommended to set `virtual_symbol_prefix = ' ' and virtual_symbol_suffix = ''` when used.
virtual_symbol_position = 'inline',

---Highlight hex colors, e.g. '#FFFFFF'
enable_hex = true,

---Highlight short hex colors e.g. '#fff'
enable_short_hex = true,

---Highlight rgb colors, e.g. 'rgb(0 0 0)'
enable_rgb = true,

---Highlight hsl colors, e.g. 'hsl(150deg 30% 40%)'
enable_hsl = true,

---Highlight CSS variables, e.g. 'var(--testing-color)'
enable_var_usage = true,

---Highlight named colors, e.g. 'green'
enable_named_colors = true,

---Highlight tailwind colors, e.g. 'bg-blue-500'
enable_tailwind = false,

---Set custom colors
---Label must be properly escaped with '%' to adhere to `string.gmatch`
--- :help string.gmatch
custom_colors = {
{ label = '%-%-theme%-primary%-color', color = '#0f1219' },
{ label = '%-%-theme%-secondary%-color', color = '#5a5d64' },
},

-- Exclude filetypes or buftypes from highlighting e.g. 'exclude_buftypes = {'text'}'
exclude_filetypes = {},
exclude_buftypes = {}
}
```

### Render modes

> Examples shown use `enable_tailwind = true`

**Background**

Background highlights for named colors, CSS variables, and Tailwind CSS colors

**Foreground**

Foreground highlights for named colors, CSS variables, and Tailwind CSS colors

**Virtual text**

Virtual text highlights for named colors, CSS variables, and Tailwind CSS colors

**nvim-cmp integration**

![image](https://github.com/brenoprata10/nvim-highlight-colors/assets/26099427/0f6858fe-f7e2-4710-a22f-c3b3a455f74b)

## Commands

| Command | Description |
| :------------------------ | :------------------ |
| `:HighlightColors On` | Turn highlights on |
| `:HighlightColors Off` | Turn highlights off |
| `:HighlightColors Toggle` | Toggle highlights |

Commands are also available in lua:

```lua
require("nvim-highlight-colors").turnOn()
require("nvim-highlight-colors").turnOff()
require("nvim-highlight-colors").toggle()
```