brenoprata10/nvim-highlight-colors

github github
color
stars 596
issues 5
subscribers 6
forks 28
CREATED

2022-07-17

UPDATED

20 days ago


nvim-highlight-colors

Highlight colors within Neovim

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

Foreground

Virtual text

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()