• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

norcalli/nvim-colorizer.lua: The fastest Neovim colorizer.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

norcalli/nvim-colorizer.lua

开源软件地址(OpenSource Url):

https://github.com/norcalli/nvim-colorizer.lua

开源编程语言(OpenSource Language):

Lua 98.6%

开源软件介绍(OpenSource Introduction):

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

Requires Neovim >= 0.4.0 and set termguicolors (I'm looking into relaxing these constraints). If you don't have true color for your terminal or are unsure, read this excellent guide.

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. NOTE: You should add this line after/below where your plugins are setup.

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

  DEFAULT_OPTIONS = {
	RGB      = true;         -- #RGB hex codes
	RRGGBB   = true;         -- #RRGGBB hex codes
	names    = true;         -- "Name" codes like Blue
	RRGGBBAA = false;        -- #RRGGBBAA hex codes
	rgb_fn   = false;        -- CSS rgb() and rgba() functions
	hsl_fn   = false;        -- CSS hsl() and hsla() functions
	css      = false;        -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
	css_fn   = false;        -- Enable all CSS *functions*: rgb_fn, hsl_fn
	-- Available modes: foreground, background
	mode     = 'background'; -- Set the display mode.
  }

MODES:

  • foreground: sets the foreground text color.
  • background: sets the background text color.

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 = { names = false; } -- Disable parsing "names" like Blue or Gray
}

-- Exclude some filetypes from highlighting by using `!`
require 'colorizer'.setup {
  '*'; -- Highlight all files, but customize some others.
  '!vim'; -- Exclude vim from highlighting.
  -- Exclusion Only makes sense if '*' is specified!
}

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

Commands

|:ColorizerAttachToBuffer|

Attach to the current buffer and start highlighting with the settings as
specified in setup (or the defaults).

If the buffer was already attached (i.e. being highlighted), the settings will
be reloaded with the ones from setup. This is useful for reloading settings
for just one buffer.

|:ColorizerDetachFromBuffer|

Stop highlighting the current buffer (detach).

|:ColorizerReloadAllBuffers|

Reload all buffers that are being highlighted with new settings from the setup
settings (or the defaults). Shortcut for ColorizerAttachToBuffer on every
buffer.

|:ColorizerToggle|

Toggle highlighting of the current buffer.

Caveats

If the file you are editing has no filetype, the plugin won't be attached, as it relies on AutoCmd to do so. You can still make it work by running the following command: :ColorizerAttachToBuffer

See this comment for more information.

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



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
rxi/log.lua: A tiny logging module for Lua发布时间:2022-08-16
下一篇:
openresty/lua-resty-lrucache: Lua-land LRU Cache based on LuaJIT FFI发布时间:2022-08-16
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap