diff options
Diffstat (limited to 'lua/plugins')
| -rw-r--r-- | lua/plugins/lualine.lua | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua new file mode 100644 index 0000000..aa74930 --- /dev/null +++ b/lua/plugins/lualine.lua @@ -0,0 +1,233 @@ +return { + "nvim-lualine/lualine.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + config = function() + local native_colorscheme = require "config.native-colorscheme" + local colors = native_colorscheme.colors + local config = { lualine_bold = true } -- Default config since we're not using solarized-osaka plugin + + local personal_colors = { + normal = { + a = { bg = colors.base03, fg = colors.blue100 }, + b = { bg = colors.fg, fg = colors.bg }, + c = { bg = colors.bg_statusline, fg = colors.fg }, + }, + insert = { + a = { bg = colors.base03, fg = colors.green100 }, + }, + + command = { + a = { bg = colors.base03, fg = colors.yellow100 }, + }, + + visual = { + a = { bg = colors.base03, fg = colors.magenta100 }, + }, + + replace = { + a = { bg = colors.base03, fg = colors.red100 }, + }, + + terminal = { + a = { bg = colors.base03, fg = colors.orange100 }, + }, + + inactive = { + a = { bg = colors.bg_statusline, fg = colors.blue }, + b = { bg = colors.bg_statusline, fg = colors.fg, gui = "bold" }, + c = { bg = colors.bg_statusline, fg = colors.fg }, + }, + } + + for _, mode in pairs(personal_colors) do + if config.lualine_bold then + mode.a.gui = "bold" + end + end + + -- local empty = require('lualine.component'):extend() + + -- local function jarak() + -- return ' ' + -- end + + local empty = require("lualine.component"):extend() + function empty:draw(default_highlight) + self.status = "" + self.applied_separator = "" + self:apply_highlights(default_highlight) + self:apply_section_separators() + return self.status + end + + local function process_sections(sections) + for name, section in pairs(sections) do + local left = name:sub(9, 10) < "x" + for pos = 1, name ~= "lualine_z" and #section or #section - 1 do + table.insert(section, pos * 2, { empty, color = { fg = colors.base03, bg = colors.base03 } }) + end + for id, comp in ipairs(section) do + if type(comp) ~= "table" then + comp = { comp } + section[id] = comp + end + -- comp.separator = left and { right = '' } or { left = '' } + comp.separator = left and { right = " " } or { left = " " } + -- comp.separator = {left = '' } and { right = '' } + end + end + return sections + end + + local lazy_status = require "lazy.status" + + require("lualine").setup { + options = { + theme = personal_colors, + -- icons_enabled = true, + -- component_separators = { left = '>', right = '┇' }, + -- section_separators = {left = '', right = '' }, + }, + sections = process_sections { + lualine_a = { + { + "mode", + icons_enabled = true, + icon = { + " ", + color = { fg = colors.base4, bg = colors.base03, gui = "bold" }, + }, + -- color = { fg = colors.base0, bg = colors.green300, gui = 'bold' }, + -- separator = { left = '', right = '' }, + -- left_padding = 2, right_padding = 0, + }, + }, + -- lualine_b = { 'filename', 'branch' }, + lualine_b = { + { + "branch", + -- separator = { left = '', right = '' }, + -- left_padding = 0, right_padding = 2, + icon = { + "", + -- align = 'left', + color = { fg = colors.orange100, bg = colors.base03, gui = "bold" }, + -- -- separator = {left = '', right = ''} + }, + -- left_padding = 0, + color = { fg = colors.orange100, bg = colors.base03, gui = "bold" }, + }, + { + "diff", + -- separator = { right = '',left = ''}, + colored = true, + symbols = { added = " ", modified = " ", removed = " " }, + diff_color = { + added = { fg = colors.green300, bg = colors.base03, gui = "bold" }, + modified = { fg = colors.yellow300, bg = colors.base03, gui = "bold" }, + removed = { fg = colors.red300, bg = colors.base03, gui = "bold" }, + }, + }, + }, + lualine_c = { + { + "filename", + on_click = function() + require("telescope.builtin").find_files() + -- print('file name clicked') + end, + icon = " ", + color = { fg = colors.yellow100, bg = colors.base03, gui = "bold" }, + path = 4, + file_status = false, + -- separator = { right = '┇', left = '┇'}, + }, + }, + lualine_x = { + { + "diagnostics", + on_click = function() + require("telescope.builtin").diagnostics() + end, + -- separator = { left = '' }, + sources = { "nvim_diagnostic" }, + sections = { "error", "warn", "info", "hint" }, + + diagnostics_color = { + error = { fg = colors.red300, bg = colors.base03, gui = "bold" }, -- Changes diagnostics' error color. + added = { fg = colors.green300, bg = colors.base03, gui = "bold" }, + warn = { fg = colors.yellow300, bg = colors.base03, gui = "bold" }, -- Changes diagnostics' warn color. + info = { fg = colors.blue300, bg = colors.base03, gui = "bold" }, -- Changes diagnostics' info color. + hint = { fg = colors.cyan300, bg = colors.base03, gui = "bold" }, -- Changes diagnostics' hint color. + }, + symbols = { error = " ", warn = " ", hint = " ", info = " " }, + colored = true, -- Displays diagnostics status in color if set to true. + update_in_insert = true, -- Update diagnostics in insert mode. default = false + always_visible = false, -- Show diagnostics even if there are none. + }, + { + lazy_status.updates, + cond = lazy_status.has_updates, + color = { fg = colors.orange300 }, + }, + { + -- code from https://github.com/nvim-lualine/lualine.nvim/blob/566b7036f717f3d676362742630518a47f132fff/examples/evil_lualine.lua + -- Lsp server name . + function() + local msg = "No LSP" + local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) + local clients = vim.lsp.get_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 client.name + end + end + return msg + end, + -- icon = ' LSP:', + -- icon = {' ', color = {bg = colors.base03, fg = colors.red100}}, + -- separator = { left = '', right = ''}, + -- separator = { left = ' ', right = ' '}, + color = { fg = colors.base4, gui = "bold", bg = colors.base03 }, + }, + + { + "filetype", + color = { bg = colors.base03, fg = colors.magenta100, gui = "bold" }, + -- separator = { left = '', right = ' ' }, + }, + }, + lualine_y = { + { + "progress", + left_padding = 0, + color = { bg = colors.base03, fg = colors.cyan100, gui = "bold" }, + }, + }, + lualine_z = { + { + -- 'location', + -- function() + -- return "Ln:%l Col:%c" + -- end + -- separator = { right = '' }, left_padding = 2 }, + }, + }, + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = { "filename" }, + lualine_x = { "location" }, + lualine_y = {}, + lualine_z = {}, + }, + tabline = {}, + extensions = {}, + } + end, +} |