bugfix: perf improvements (#213)
* Revert "Revert "Performence improvments (#205)" (#212)"
This reverts commit d3cc343053
.
* BugFix: All windows having same component state
This commit is contained in:
parent
d3cc343053
commit
141778c953
|
@ -1,11 +1,10 @@
|
||||||
-- Copyright (c) 2020-2021 hoob3rt
|
-- Copyright (c) 2020-2021 hoob3rt
|
||||||
-- MIT license, see LICENSE for more details.
|
-- MIT license, see LICENSE for more details.
|
||||||
local M = {}
|
local M = {}
|
||||||
local utils_colors = require 'lualine.utils.cterm_colors'
|
local cterm_colors
|
||||||
local utils = require 'lualine.utils.utils'
|
local utils = require 'lualine.utils.utils'
|
||||||
local section_highlight_map = {x = 'c', y = 'b', z = 'a'}
|
local section_highlight_map = {x = 'c', y = 'b', z = 'a'}
|
||||||
local active_theme = nil
|
local active_theme = nil
|
||||||
local cterm_colors = false
|
|
||||||
|
|
||||||
function M.highlight(name, foreground, background, gui, reload)
|
function M.highlight(name, foreground, background, gui, reload)
|
||||||
local command = {'highlight', name}
|
local command = {'highlight', name}
|
||||||
|
@ -13,14 +12,14 @@ function M.highlight(name, foreground, background, gui, reload)
|
||||||
table.insert(command, 'guifg=' .. foreground)
|
table.insert(command, 'guifg=' .. foreground)
|
||||||
if cterm_colors then
|
if cterm_colors then
|
||||||
table.insert(command,
|
table.insert(command,
|
||||||
'ctermfg=' .. utils_colors.get_cterm_color(foreground))
|
'ctermfg=' .. cterm_colors.get_cterm_color(foreground))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if background and background ~= 'none' then
|
if background and background ~= 'none' then
|
||||||
table.insert(command, 'guibg=' .. background)
|
table.insert(command, 'guibg=' .. background)
|
||||||
if cterm_colors then
|
if cterm_colors then
|
||||||
table.insert(command,
|
table.insert(command,
|
||||||
'ctermbg=' .. utils_colors.get_cterm_color(background))
|
'ctermbg=' .. cterm_colors.get_cterm_color(background))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if gui then
|
if gui then
|
||||||
|
@ -36,7 +35,9 @@ end
|
||||||
function M.create_highlight_groups(theme)
|
function M.create_highlight_groups(theme)
|
||||||
utils.clear_highlights()
|
utils.clear_highlights()
|
||||||
active_theme = theme
|
active_theme = theme
|
||||||
cterm_colors = not vim.o.termguicolors
|
if not vim.o.termguicolors then
|
||||||
|
cterm_colors = require 'lualine.utils.cterm_colors'
|
||||||
|
end
|
||||||
for mode, sections in pairs(theme) do
|
for mode, sections in pairs(theme) do
|
||||||
for section, colorscheme in pairs(sections) do
|
for section, colorscheme in pairs(sections) do
|
||||||
local highlight_group_name = {'lualine', section, mode}
|
local highlight_group_name = {'lualine', section, mode}
|
||||||
|
|
|
@ -5,7 +5,6 @@ local highlight = require('lualine.highlight')
|
||||||
local config = {}
|
local config = {}
|
||||||
|
|
||||||
local function apply_configuration(config_table)
|
local function apply_configuration(config_table)
|
||||||
if not config_table then return end
|
|
||||||
local function parse_sections(section_group_name)
|
local function parse_sections(section_group_name)
|
||||||
if not config_table[section_group_name] then return end
|
if not config_table[section_group_name] then return end
|
||||||
for section_name, section in pairs(config_table[section_group_name]) do
|
for section_name, section in pairs(config_table[section_group_name]) do
|
||||||
|
@ -81,6 +80,8 @@ local function component_loader(component)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function load_sections(sections)
|
local function load_sections(sections)
|
||||||
|
local async_loader
|
||||||
|
async_loader = vim.loop.new_async(vim.schedule_wrap(function()
|
||||||
for section_name, section in pairs(sections) do
|
for section_name, section in pairs(sections) do
|
||||||
for index, component in pairs(section) do
|
for index, component in pairs(section) do
|
||||||
if type(component) == 'string' or type(component) == 'function' then
|
if type(component) == 'string' or type(component) == 'function' then
|
||||||
|
@ -93,6 +94,9 @@ local function load_sections(sections)
|
||||||
section[index] = component_loader(component)
|
section[index] = component_loader(component)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
async_loader:close()
|
||||||
|
end))
|
||||||
|
async_loader:send()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function load_components()
|
local function load_components()
|
||||||
|
@ -234,6 +238,8 @@ end
|
||||||
local function tabline() return statusline(config.tabline, true) end
|
local function tabline() return statusline(config.tabline, true) end
|
||||||
|
|
||||||
local function setup_theme()
|
local function setup_theme()
|
||||||
|
local async_loader
|
||||||
|
async_loader = vim.loop.new_async(vim.schedule_wrap(function()
|
||||||
local function get_theme_from_config()
|
local function get_theme_from_config()
|
||||||
local theme_name = config.options.theme
|
local theme_name = config.options.theme
|
||||||
if type(theme_name) == 'string' then
|
if type(theme_name) == 'string' then
|
||||||
|
@ -255,10 +261,12 @@ local function setup_theme()
|
||||||
highlight.create_highlight_groups(theme)
|
highlight.create_highlight_groups(theme)
|
||||||
vim.api.nvim_exec([[
|
vim.api.nvim_exec([[
|
||||||
augroup lualine
|
augroup lualine
|
||||||
autocmd!
|
|
||||||
autocmd ColorScheme * lua require'lualine.utils.utils'.reload_highlights()
|
autocmd ColorScheme * lua require'lualine.utils.utils'.reload_highlights()
|
||||||
augroup END
|
augroup END
|
||||||
]], false)
|
]], false)
|
||||||
|
async_loader:close()
|
||||||
|
end))
|
||||||
|
async_loader:send()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_tabline()
|
local function set_tabline()
|
||||||
|
@ -272,8 +280,11 @@ local function set_statusline()
|
||||||
if next(config.sections) ~= nil or next(config.inactive_sections) ~= nil then
|
if next(config.sections) ~= nil or next(config.inactive_sections) ~= nil then
|
||||||
vim.o.statusline = '%!v:lua.require\'lualine\'.statusline()'
|
vim.o.statusline = '%!v:lua.require\'lualine\'.statusline()'
|
||||||
vim.api.nvim_exec([[
|
vim.api.nvim_exec([[
|
||||||
autocmd lualine WinLeave,BufLeave * lua vim.wo.statusline=require'lualine'.statusline()
|
augroup lualine
|
||||||
autocmd lualine WinEnter,BufEnter * set statusline<
|
autocmd!
|
||||||
|
autocmd WinLeave,BufLeave * lua vim.wo.statusline=require'lualine'.statusline()
|
||||||
|
autocmd WinEnter,BufEnter * set statusline<
|
||||||
|
augroup END
|
||||||
]], false)
|
]], false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,9 @@ function M.draw_section(section, highlight_name)
|
||||||
local status = {}
|
local status = {}
|
||||||
for _, component in pairs(section) do
|
for _, component in pairs(section) do
|
||||||
-- load components into status table
|
-- load components into status table
|
||||||
|
if type(component) ~= 'table' or (type(component) == 'table' and not component.component_no) then
|
||||||
|
return '' -- unknown element in section. section posibly not yet loaded
|
||||||
|
end
|
||||||
table.insert(status, component:draw(highlight_name))
|
table.insert(status, component:draw(highlight_name))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue