Skip to content

filipekiss/nvim-colorizer.lua

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

colorizer.lua

luadoc

A high-performance color highlighter for Neovim which has no external dependencies! Written in performant Luajit.

Demo.gif

Demo.mp4

Installation and Usage

Use your plugin manager or clone directly into your runtimepath.

Plug 'norcalli/nvim-colorizer.lua'

As long as you have malloc() and free() on your system, this will work. Which includes Linux, OSX, and Windows.

One line setup. This will create an autocmd for FileType * to highlight every filetype.

lua require'colorizer'.setup()

Why another highlighter?

Mostly, RAW SPEED.

This has no external dependencies, which means you install it and it just works. Other colorizers typically were synchronous and slow, as well. Being written with performance in mind and leveraging the excellent LuaJIT and a handwritten parser, updates can be done in real time. There are plugins such as hexokinase which have good performance, but it has some difficulty with becoming out of sync. The downside is that this only works for Neovim, and that will never change.

Additionally, having a Lua API that's available means users can use this as a library to do custom highlighting themselves.

Customization

The available highlight modes are foreground, background. The default is background.

Full options list:

  • no_names: Disable parsing names like "Blue"
  • rgb_fn: Enable parsing rgb(...) functions.
  • mode: Highlight mode. Valid options: foreground,background

For basic setup, you can use a command like the following.

-- Attaches to every FileType mode
require 'colorizer'.setup()

-- Attach to certain Filetypes, add special configuration for `html`
-- Use `background` for everything else.
require 'colorizer'.setup {
  'css';
  'javascript';
  html = {
	  mode = 'foreground';
  }
}

-- Use the `default_options` as the second parameter, which uses
-- `foreground` for every mode. This is the inverse of the previous
-- setup configuration.
require 'colorizer'.setup({
  'css';
  'javascript';
  html = { mode = 'background' };
}, { mode = 'foreground' })

-- Use the `default_options` as the second parameter, which uses
-- `foreground` for every mode. This is the inverse of the previous
-- setup configuration.
require 'colorizer'.setup {
  '*'; -- Highlight all files, but customize some others.
  css = { rgb_fn = true; }; -- Enable parsing rgb(...) functions in css.
  html = { no_names = true; } -- Disable parsing "names" like Blue or Gray
}

For lower level interface, see the LuaDocs for API details or use :h colorizer.lua once installed.

TODO

  • Add more display modes?
  • Use a more space efficient trie implementation.
  • Create a COMMON_SETUP which does obvious things like enable rgb_fn for css

About

THE FASTEST NEOVIM COLORIZER

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 99.3%
  • Vim Script 0.7%