Skip to content

brenoprata10/nvim-highlight-colors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 and csslsp
  • Multiple rendering modes: background, foreground, and virtual text

Usage

Install via your preferred package manager:

'brenoprata10/nvim-highlight-colors'

Initialize the plugin:

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

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

nvim-cmp integration

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

or

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:

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

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

Commands

Command Description
:HighlightColors On Turn highlights on
:HighlightColors Off Turn highlights off
:HighlightColors Toggle Toggle highlights

Commands are also available in lua:

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