Regenerate nvim config
This commit is contained in:
@ -0,0 +1,99 @@
|
||||
-- Copyright (c) 2020-2021 shadmansaleh
|
||||
-- MIT license, see LICENSE for more details.
|
||||
|
||||
assert = require('luassert')
|
||||
local eq = assert.are.same
|
||||
|
||||
local M = {}
|
||||
|
||||
M.meths = setmetatable({}, {
|
||||
__index = function(_, key)
|
||||
return vim.api['nvim_' .. key]
|
||||
end,
|
||||
})
|
||||
|
||||
function M.init_component(component, opts)
|
||||
if component == nil then
|
||||
component = 'special.function_component'
|
||||
else
|
||||
opts.component_name = component
|
||||
end
|
||||
local comp = require('lualine.components.' .. component)
|
||||
if type(comp) == 'table' then
|
||||
comp = comp(opts)
|
||||
elseif type(comp) == 'function' then
|
||||
opts[1] = comp
|
||||
comp = require('lualine.components.special.function_component')(opts)
|
||||
end
|
||||
return comp
|
||||
end
|
||||
|
||||
-- Checks output of a component
|
||||
M.assert_component = function(component, opts, result, is_active)
|
||||
local comp = M.init_component(component, opts)
|
||||
-- for testing global options
|
||||
eq(result, comp:draw(opts.hl, is_active or true))
|
||||
end
|
||||
|
||||
function M.assert_component_instance(comp, result)
|
||||
eq(result, comp:draw(comp.options.hl))
|
||||
end
|
||||
-- sets defaults for component options
|
||||
M.build_component_opts = function(opts)
|
||||
if not opts then
|
||||
opts = {}
|
||||
end
|
||||
if opts[1] == nil then
|
||||
opts[1] = function()
|
||||
return 'test'
|
||||
end
|
||||
end
|
||||
if not opts.self then
|
||||
opts.self = { section = 'c' }
|
||||
end
|
||||
if not opts.theme then
|
||||
opts.theme = 'gruvbox'
|
||||
end
|
||||
if not opts.hl then
|
||||
opts.hl = ''
|
||||
end
|
||||
if opts.icons_enabled == nil then
|
||||
opts.icons_enabled = true
|
||||
end
|
||||
if not opts.component_separators then
|
||||
opts.component_separators = { left = '', right = '' }
|
||||
end
|
||||
if not opts.section_separators then
|
||||
opts.section_separators = { left = '', right = '' }
|
||||
end
|
||||
return opts
|
||||
end
|
||||
|
||||
M.P = function(t)
|
||||
print(vim.inspect(t))
|
||||
end
|
||||
|
||||
function M.dedent(str, leave_indent)
|
||||
-- find minimum common indent across lines
|
||||
local indent = nil
|
||||
for line in str:gmatch('[^\n]+') do
|
||||
local line_indent = line:match('^%s+') or ''
|
||||
if indent == nil or #line_indent < #indent then
|
||||
indent = line_indent
|
||||
end
|
||||
end
|
||||
if indent == nil or #indent == 0 then
|
||||
-- no minimum common indent
|
||||
return str
|
||||
end
|
||||
local left_indent = (' '):rep(leave_indent or 0)
|
||||
-- create a pattern for the indent
|
||||
indent = indent:gsub('%s', '[ \t]')
|
||||
-- strip it from the first line
|
||||
str = str:gsub('^' .. indent, left_indent)
|
||||
-- strip it from the remaining lines
|
||||
str = str:gsub('[\n]' .. indent, '\n' .. left_indent)
|
||||
return str
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user