From 3e63e8fce45cf2efc4a324df19cc06ea0d2909b6 Mon Sep 17 00:00:00 2001 From: adam <56338480+adastx@users.noreply.github.com> Date: Fri, 7 Oct 2022 18:57:28 +0200 Subject: WIP: nvim: ricing lualine --- .config/nvim/lua/setup/lualine.lua | 137 ++++++++++++++++++++++++++++++++++--- 1 file changed, 126 insertions(+), 11 deletions(-) diff --git a/.config/nvim/lua/setup/lualine.lua b/.config/nvim/lua/setup/lualine.lua index 087a301..54f31d4 100644 --- a/.config/nvim/lua/setup/lualine.lua +++ b/.config/nvim/lua/setup/lualine.lua @@ -1,27 +1,128 @@ -local lualine = require 'lualine' +local lualine = require("lualine") + +local colors = { + bg = '#202328', + fg = '#bbc2cf', + yellow = '#ECBE7B', + cyan = '#008080', + darkblue = '#081633', + green = '#98be65', + orange = '#FF8800', + violet = '#a9a1e1', + magenta = '#c678dd', + blue = '#51afef', + red = '#ec5f67', +} + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} local config = { options = { icons_enabled = true, - theme = 'onedark', - component_separators = { left = '', right = '' }, - section_separators = { left = '', right = '' }, + -- theme = 'onedark', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + component_separators = '', + section_separators = '', globalstatus = true, }, sections = { - lualine_a = { 'mode' }, - lualine_b = { 'branch' }, - lualine_c = { 'filename', 'diagnostics' }, - lualine_x = { 'encoding', 'filetype' }, - lualine_y = { 'progress' }, - lualine_z = { 'location' }, + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, }, } +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x ot right section local function ins_right(component) - table.insert(config.sections.lualine_x, 1, component) + table.insert(config.sections.lualine_x, component) end +ins_left { + function() + return '▊' + end, + color = { fg = colors.blue }, -- Sets highlighting of component + padding = { left = 0, right = 1 }, -- We don't need space before this +} + +ins_left { + -- mode component + function() + return '' + end, + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.red, + i = colors.green, + v = colors.blue, + [''] = colors.blue, + V = colors.blue, + c = colors.magenta, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.violet, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { right = 1 }, +} + +ins_left { + -- filesize component + 'filesize', + cond = conditions.buffer_not_empty, +} + +ins_left { + 'filename', + cond = conditions.buffer_not_empty, + color = { fg = colors.magenta, gui = 'bold' }, +} + +ins_left { 'location' } + +ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } + ins_right { -- LSP Indicator function() @@ -41,4 +142,18 @@ ins_right { end, } +ins_left { + 'diagnostics', + sources = { 'nvim_lsp' }, + sections = { 'error', 'warn', 'info', 'hint' }, + -- symbols = { error = 'E', warn = 'W', info = 'I', hint = 'H' }, + diagnostics_color = { + -- Same values as the general color option can be used here. + error = 'DiagnosticError', -- Changes diagnostics' error color. + warn = 'DiagnosticWarn', -- Changes diagnostics' warn color. + info = 'DiagnosticInfo', -- Changes diagnostics' info color. + hint = 'DiagnosticHint', -- Changes diagnostics' hint color. + }, +} + lualine.setup(config) -- cgit v1.2.3-70-g09d2