mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 13:40:05 +08:00
Compare commits
2 Commits
e9c0f6c4c6
...
e5cf9021dc
Author | SHA1 | Date | |
---|---|---|---|
|
e5cf9021dc | ||
|
d0d48b7f78 |
@ -48,7 +48,7 @@ let s:default_spaces = ['rgb', 'hsl']
|
|||||||
function! SpaceVim#layers#tools#cpicker#plugins() abort
|
function! SpaceVim#layers#tools#cpicker#plugins() abort
|
||||||
|
|
||||||
return [
|
return [
|
||||||
\ [g:_spacevim_root_dir . 'bundle/cpicker.nvim', {'merged' : 0, 'loadconf' : 1, 'on_cmd' : ['Cpicker', 'CpickerCursorForeground', 'CpickerColorMix']}],
|
\ [g:_spacevim_root_dir . 'bundle/cpicker.nvim', {'merged' : 0, 'loadconf' : 1}],
|
||||||
\ ]
|
\ ]
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -16,5 +16,6 @@ context_filetype-variables context_filetype.jax /*context_filetype-variables*
|
|||||||
context_filetype.txt context_filetype.jax /*context_filetype.txt*
|
context_filetype.txt context_filetype.jax /*context_filetype.txt*
|
||||||
g:context_filetype#filetypes context_filetype.jax /*g:context_filetype#filetypes*
|
g:context_filetype#filetypes context_filetype.jax /*g:context_filetype#filetypes*
|
||||||
g:context_filetype#ignore_composite_filetypes context_filetype.jax /*g:context_filetype#ignore_composite_filetypes*
|
g:context_filetype#ignore_composite_filetypes context_filetype.jax /*g:context_filetype#ignore_composite_filetypes*
|
||||||
|
g:context_filetype#ignore_patterns context_filetype.jax /*g:context_filetype#ignore_patterns*
|
||||||
g:context_filetype#same_filetypes context_filetype.jax /*g:context_filetype#same_filetypes*
|
g:context_filetype#same_filetypes context_filetype.jax /*g:context_filetype#same_filetypes*
|
||||||
g:context_filetype#search_offset context_filetype.jax /*g:context_filetype#search_offset*
|
g:context_filetype#search_offset context_filetype.jax /*g:context_filetype#search_offset*
|
||||||
|
@ -27,6 +27,8 @@ Plug 'wsdjeg/cpicker.nvim'
|
|||||||
1. `:Cpicker`: open the color converter
|
1. `:Cpicker`: open the color converter
|
||||||
2. `:CpickerCursorForeground`: open the color converter with cursor highlight
|
2. `:CpickerCursorForeground`: open the color converter with cursor highlight
|
||||||
3. `:CpickerColorMix`: open the color mixer
|
3. `:CpickerColorMix`: open the color mixer
|
||||||
|
4. `:CpickerCursorChangeHighlight`: change the highlight of cursor word
|
||||||
|
5. `:CpickerClearColorPatch`: clear colorscheme patch
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@ local enabled_formats = {}
|
|||||||
local increase_keys = {}
|
local increase_keys = {}
|
||||||
local reduce_keys = {}
|
local reduce_keys = {}
|
||||||
local color_code_regex = {}
|
local color_code_regex = {}
|
||||||
|
local cursor_hl
|
||||||
|
local cursor_hl_name
|
||||||
|
|
||||||
local function update_buf_text()
|
local function update_buf_text()
|
||||||
local rst = {}
|
local rst = {}
|
||||||
@ -112,6 +114,11 @@ local function increase()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
update_buf_text()
|
update_buf_text()
|
||||||
|
if cursor_hl and cursor_hl_name then
|
||||||
|
cursor_hl.fg = color_hi
|
||||||
|
vim.api.nvim_set_hl(0, cursor_hl_name, cursor_hl)
|
||||||
|
util.update_color_patch(cursor_hl_name, cursor_hl)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function reduce()
|
local function reduce()
|
||||||
@ -126,6 +133,11 @@ local function reduce()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
update_buf_text()
|
update_buf_text()
|
||||||
|
if cursor_hl and cursor_hl_name then
|
||||||
|
cursor_hl.fg = color_hi
|
||||||
|
vim.api.nvim_set_hl(0, cursor_hl_name, cursor_hl)
|
||||||
|
util.update_color_patch(cursor_hl_name, cursor_hl)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
M.picker = function(formats)
|
M.picker = function(formats)
|
||||||
@ -148,9 +160,6 @@ M.picker = function(formats)
|
|||||||
vim.api.nvim_set_option_value('bufhidden', 'wipe', {
|
vim.api.nvim_set_option_value('bufhidden', 'wipe', {
|
||||||
buf = bufnr,
|
buf = bufnr,
|
||||||
})
|
})
|
||||||
vim.api.nvim_set_option_value('number', false, {
|
|
||||||
buf = bufnr,
|
|
||||||
})
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'l', '', {
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'l', '', {
|
||||||
callback = increase,
|
callback = increase,
|
||||||
})
|
})
|
||||||
@ -201,4 +210,9 @@ M.set_default_color = function(hex)
|
|||||||
color_hi = hex
|
color_hi = hex
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function M.change_cursor_highlight(name, hl, formats)
|
||||||
|
cursor_hl_name = name
|
||||||
|
cursor_hl = hl
|
||||||
|
M.picker(formats)
|
||||||
|
end
|
||||||
return M
|
return M
|
||||||
|
@ -125,4 +125,83 @@ function M.set_default_color(formats)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function M.get_cursor_hl()
|
||||||
|
local inspect = vim.inspect_pos()
|
||||||
|
local name, hl
|
||||||
|
if #inspect.semantic_tokens > 0 then
|
||||||
|
local token, priority = {}, 0
|
||||||
|
for _, semantic_token in ipairs(inspect.semantic_tokens) do
|
||||||
|
if semantic_token.opts.priority > priority then
|
||||||
|
priority = semantic_token.opts.priority
|
||||||
|
token = semantic_token
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if token then
|
||||||
|
name = token.opts.hl_group_link
|
||||||
|
hl = vim.api.nvim_get_hl(0, { name = token.opts.hl_group_link })
|
||||||
|
end
|
||||||
|
elseif #inspect.treesitter > 0 then
|
||||||
|
for i = #inspect.treesitter, 1, -1 do
|
||||||
|
name = inspect.treesitter[i].hl_group_link
|
||||||
|
hl = vim.api.nvim_get_hl(0, { name = name })
|
||||||
|
if hl.fg then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
name = vim.fn.synIDattr(vim.fn.synID(vim.fn.line('.'), vim.fn.col('.'), 1), 'name', 'gui')
|
||||||
|
hl = get_color(name)
|
||||||
|
end
|
||||||
|
return name, hl
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.read_color_patch()
|
||||||
|
if
|
||||||
|
vim.fn.filereadable(vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim/cpicker_color_patch'))
|
||||||
|
== 1
|
||||||
|
then
|
||||||
|
local _his = vim.fn.json_decode( vim.fn.join( vim.fn.readfile(vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim/cpicker_color_patch'), ''), '' ) )
|
||||||
|
if type(_his) == 'table' then
|
||||||
|
return _his or {}
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function M.update_color_patch(name, hl)
|
||||||
|
if vim.fn.isdirectory(vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim')) == 0 then
|
||||||
|
vim.fn.mkdir(vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim'))
|
||||||
|
end
|
||||||
|
local patch = M.read_color_patch()
|
||||||
|
if not patch[vim.g.colors_name] then
|
||||||
|
patch[vim.g.colors_name] = {}
|
||||||
|
end
|
||||||
|
patch[vim.g.colors_name][name] = hl
|
||||||
|
vim.fn.writefile(
|
||||||
|
{ vim.fn.json_encode(patch) },
|
||||||
|
vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim/cpicker_color_patch')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.patch_color(c)
|
||||||
|
local patch = M.read_color_patch()
|
||||||
|
if patch[c] then
|
||||||
|
for name, hl in pairs(patch[c]) do
|
||||||
|
vim.api.nvim_set_hl(0, name, hl)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.clear_color_patch()
|
||||||
|
local patch = M.read_color_patch()
|
||||||
|
patch[vim.g.colors_name] = nil
|
||||||
|
vim.fn.writefile(
|
||||||
|
{ vim.fn.json_encode(patch) },
|
||||||
|
vim.fn.expand(vim.g.spacevim_data_dir .. 'SpaceVim/cpicker_color_patch')
|
||||||
|
)
|
||||||
|
vim.cmd('colorscheme ' .. vim.g.colors_name)
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
-- License: GPLv3
|
-- License: GPLv3
|
||||||
--=============================================================================
|
--=============================================================================
|
||||||
|
|
||||||
|
-- detached cpicker need this var
|
||||||
|
if not vim.g.spacevim_data_dir then
|
||||||
|
vim.g.spacevim_data_dir = '~/.cache/'
|
||||||
|
end
|
||||||
|
|
||||||
if vim.api.nvim_create_user_command then
|
if vim.api.nvim_create_user_command then
|
||||||
local function complete()
|
local function complete()
|
||||||
return { 'rgb', 'hsl', 'hsv', 'cmyk', 'hwb', 'linear', 'lab' }
|
return { 'rgb', 'hsl', 'hsv', 'cmyk', 'hwb', 'linear', 'lab' }
|
||||||
@ -20,4 +25,25 @@ if vim.api.nvim_create_user_command then
|
|||||||
vim.api.nvim_create_user_command('CpickerColorMix', function(opt)
|
vim.api.nvim_create_user_command('CpickerColorMix', function(opt)
|
||||||
require('cpicker.mix').color_mix(unpack(opt.fargs))
|
require('cpicker.mix').color_mix(unpack(opt.fargs))
|
||||||
end, { nargs = '*', complete = complete })
|
end, { nargs = '*', complete = complete })
|
||||||
|
vim.api.nvim_create_user_command('CpickerCursorChangeHighlight', function(opt)
|
||||||
|
local name, hl = require('cpicker.util').get_cursor_hl()
|
||||||
|
require('cpicker.util').set_default_color(opt.fargs)
|
||||||
|
require('cpicker').change_cursor_highlight(name, hl, opt.fargs)
|
||||||
|
end, { nargs = '*', complete = complete })
|
||||||
|
-- if vim.g.cpicker_enable_color_patch then
|
||||||
|
|
||||||
|
local group = vim.api.nvim_create_augroup('cpicker', { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd({ 'ColorScheme' }, {
|
||||||
|
group = group,
|
||||||
|
pattern = { '*' },
|
||||||
|
callback = function(ev)
|
||||||
|
require('cpicker.util').patch_color(ev.match)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
require('cpicker.util').patch_color(vim.g.colors_name)
|
||||||
|
vim.api.nvim_create_user_command('CpickerClearColorPatch', function(opt)
|
||||||
|
require('cpicker.util').clear_color_patch()
|
||||||
|
end, { nargs = '*', complete = complete })
|
||||||
|
|
||||||
|
-- end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user