1
0
Fork 0
numbers/nvim/lua/plugins/windline_nvim.lua

244 lines
6.9 KiB
Lua

local windline = require('windline')
local helper = require('windline.helpers')
local sep = helper.separators
local vim_components = require('windline.components.vim')
local b_components = require('windline.components.basic')
local state = _G.WindLine.state
local lsp_comps = require('windline.components.lsp')
local git_comps = require('windline.components.git')
local hl_list = {
Black = { 'white', 'black' },
White = { 'black', 'white' },
Inactive = { 'InactiveFg', 'InactiveBg' },
Active = { 'ActiveFg', 'ActiveBg' },
}
local basic = {}
basic.divider = { b_components.divider, '' }
basic.space = { ' ', '' }
basic.bg = { ' ', 'StatusLine' }
basic.file_name_inactive = { b_components.full_file_name, hl_list.Inactive }
basic.line_col_inactive = { b_components.line_col, hl_list.Inactive }
basic.progress_inactive = { b_components.progress, hl_list.Inactive }
basic.vi_mode = {
hl_colors = {
Normal = { 'black', 'blue', 'bold' },
Insert = { 'black', 'red', 'bold' },
Visual = { 'black', 'white', 'bold' },
Replace = { 'black', 'blue_light', 'bold' },
Command = { 'black', 'magenta', 'bold' },
NormalBefore = { 'blue', 'black' },
InsertBefore = { 'red', 'black' },
VisualBefore = { 'white', 'black' },
ReplaceBefore = { 'blue_light', 'black' },
CommandBefore = { 'magenta', 'black' },
NormalAfter = { 'white', 'blue' },
InsertAfter = { 'white', 'red' },
VisualAfter = { 'white', 'white' },
ReplaceAfter = { 'white', 'blue_light' },
CommandAfter = { 'white', 'magenta' },
},
text = function()
return {
{ sep.left_rounded, state.mode[2] .. 'Before' },
{ state.mode[1] .. ' ', state.mode[2] },
}
end,
}
basic.lsp_diagnos = {
width = 90,
hl_colors = {
red = { 'red', 'black' },
yellow = { 'yellow', 'black' },
blue = { 'blue', 'black' },
},
text = function()
if lsp_comps.check_lsp() then
return {
{ lsp_comps.lsp_error({ format = '  %s' }), 'red' },
{ lsp_comps.lsp_warning({ format = '  %s' }), 'yellow' },
{ lsp_comps.lsp_hint({ format = '  %s' }), 'blue' },
}
end
return ''
end,
}
local icon_comp = b_components.cache_file_icon({ default = '', hl_colors = {'white','black_light'} })
basic.file = {
hl_colors = {
default = { 'white', 'black_light' },
},
text = function(bufnr)
return {
{ ' ', 'default' },
icon_comp(bufnr),
{ ' ', 'default' },
{ b_components.cache_file_name('[No Name]', ''), '' },
{ b_components.file_modified(''), '' },
-- { b_components.cache_file_size(), '' },
}
end,
}
basic.right = {
hl_colors = {
sep_before = { 'black_light', 'white_light' },
sep_after = { 'white_light', 'black' },
text = { 'black', 'white_light' },
},
text = function()
return {
-- { b_components.line_col, 'text' },
{ b_components.progress, 'text' },
{ sep.right_rounded, 'sep_after' },
}
end,
}
basic.git = {
width = 90,
hl_colors = {
green = { 'green', 'black' },
red = { 'red', 'black' },
blue = { 'blue', 'black' },
},
text = function()
if git_comps.is_git() then
return {
{ ' ', '' },
{ git_comps.diff_added({ format = '+%s' }), 'green' },
{ git_comps.diff_removed({ format = '-%s' }), 'red' },
{ git_comps.diff_changed({ format = '~%s' }), 'blue' },
}
end
return ''
end,
}
basic.logo = {
hl_colors = {
sep_before = { 'blue', 'black' },
default = { 'black', 'blue' },
},
text = function()
return {
{ sep.left_rounded, 'sep_before' },
{ '', 'default' },
}
end,
}
-- LSP status
local lsp_status = require('lsp-status')
lsp_status.register_progress()
local lsp_config = require('lspconfig')
-- Lsp server name .
function lspservername()
local msg = ''
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
local clients = vim.lsp.get_active_clients()
if next(clients) == nil then return msg end
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return "LSP[" .. client.name .. "]"
end
end
return msg
end
basic.lsp = {
width = 90,
hl_colors = {
red = { 'red', 'black' },
yellow = { 'yellow', 'black' },
blue = { 'blue', 'black' },
},
text = function()
return {
{ lsp_status.status, 'red' },
{" ", ""},
{ lspservername(), 'red' },
}
end,
}
basic.git_branch = {
text = function()
return {
{ git_comps.git_branch(), { 'green', 'black', '' }, 90 },
}
end,
}
local default = {
filetypes = { 'default' },
active = {
basic.vi_mode,
{ git_comps.git_branch(), { 'red', 'black', 'bold' }, 90 },
basic.git,
basic.file,
{ vim_components.search_count(), { 'red', 'black_light' } },
{ sep.right_rounded, { 'black_light', 'black' } },
basic.divider,
basic.lsp_diagnos,
basic.lsp,
{ ' ', hl_list.Black },
basic.right,
-- { ' ', hl_list.Black },
},
in_active = {
basic.file_name_inactive,
basic.divider,
basic.divider,
basic.line_col_inactive,
{ '', { 'white', 'InactiveBg' } },
basic.progress_inactive,
},
}
local quickfix = {
filetypes = { 'qf', 'Trouble' },
active = {
{ '🚦 Quickfix ', { 'white', 'black' } },
{ helper.separators.slant_right, { 'black', 'black_light' } },
{
function()
return vim.fn.getqflist({ title = 0 }).title
end,
{ 'cyan', 'black_light' },
},
{ ' Total : %L ', { 'cyan', 'black_light' } },
{ helper.separators.slant_right, { 'black_light', 'InactiveBg' } },
{ ' ', { 'InactiveFg', 'InactiveBg' } },
basic.divider,
{ helper.separators.slant_right, { 'InactiveBg', 'black' } },
{ '🧛 ', { 'white', 'black' } },
},
show_in_active = true,
}
local explorer = {
filetypes = { 'fern', 'NvimTree', 'lir' },
active = {
{ '', { 'white', 'black' } },
{ helper.separators.slant_right, { 'black', 'black_light' } },
{ b_components.divider, '' },
{ b_components.file_name(''), { 'white', 'black_light' } },
},
show_in_active = true,
}
windline.setup({
colors_name = function(colors)
-- ADD MORE COLOR HERE ----
return colors
end,
statuslines = {
default,
quickfix,
explorer,
},
})