From d88d1682d1d99912b82e10dafd0091a017f050ed Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Tue, 19 Aug 2025 15:04:47 +0200 Subject: [PATCH] Configure evil lualine --- lazyvim/.config/nvim/lazy-lock.json | 1 + lazyvim/.config/nvim/lua/config/lazy.lua | 8 + .../.config/nvim/lua/config/statusline.lua | 219 ++++++++++++++++++ lazyvim/.config/nvim/lua/plugins/lualine.lua | 4 + 4 files changed, 232 insertions(+) create mode 100644 lazyvim/.config/nvim/lua/config/statusline.lua create mode 100644 lazyvim/.config/nvim/lua/plugins/lualine.lua diff --git a/lazyvim/.config/nvim/lazy-lock.json b/lazyvim/.config/nvim/lazy-lock.json index d80c77c..2176681 100644 --- a/lazyvim/.config/nvim/lazy-lock.json +++ b/lazyvim/.config/nvim/lazy-lock.json @@ -43,6 +43,7 @@ "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" }, "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "refactoring.nvim": { "branch": "master", "commit": "74b608dfee827c2372250519d433cc21cb083407" }, diff --git a/lazyvim/.config/nvim/lua/config/lazy.lua b/lazyvim/.config/nvim/lua/config/lazy.lua index 5e78bd9..cf896bb 100644 --- a/lazyvim/.config/nvim/lua/config/lazy.lua +++ b/lazyvim/.config/nvim/lua/config/lazy.lua @@ -12,8 +12,10 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then os.exit(1) end end + vim.opt.rtp:prepend(lazypath) +-- Start LazyVim plugins require("lazy").setup({ spec = { -- add LazyVim and import its plugins @@ -49,6 +51,10 @@ require("lazy").setup({ cache = true, }) +-- Configure status bar +require("config.statusline") + +-- Configure Markdown rendering rules require("render-markdown").setup({ heading = { position = "inline" }, quote = { repeat_linebreak = true }, @@ -104,6 +110,7 @@ require("render-markdown").setup({ }, }) +-- Configure TreeSitter syntax parsers require("nvim-treesitter.configs").setup({ -- A list of parser names, or "all" (the listed parsers MUST always be installed) ensure_installed = { @@ -159,4 +166,5 @@ require("nvim-treesitter.configs").setup({ }, }) +-- Configure Mini.AI for textobjects command require("mini.ai").setup() diff --git a/lazyvim/.config/nvim/lua/config/statusline.lua b/lazyvim/.config/nvim/lua/config/statusline.lua new file mode 100644 index 0000000..c94c565 --- /dev/null +++ b/lazyvim/.config/nvim/lua/config/statusline.lua @@ -0,0 +1,219 @@ +-- Eviline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +local lualine = require("lualine") + +-- Color table for highlights +-- stylua: ignore +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, +} + +-- Config +local config = { + options = { + -- Disable sections and component separators + component_separators = "", + section_separators = "", + theme = "catppuccin", + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + 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 at right section +local function ins_right(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 +}) + +-- -- Function to get the current mode indicator as a single character +local function mode() + -- Map of modes to their respective shorthand indicators + local mode_map = { + n = "NORMAL", -- Normal mode + v = "VISUAL", -- Visual mode + [""] = "VISUAL BLOCK", -- Visual block mode + V = "VISUAL LINE", -- Visual line mode + c = "COMMAND", -- Command-line mode + no = "N-INSERT", -- NInsert mode + s = "SELECT", -- Select mode + S = "SELECT-LINE", -- Select line mode + ic = "INSERT", -- Insert mode (completion) + R = "REPLACE", -- Replace mode + Rv = "VISUAL REPLACE", -- Virtual Replace mode + cv = "COMMAND-LINE", -- Command-line mode + ce = "C", -- Ex mode + r = "R", -- Prompt mode + rm = "M", -- More mode + ["r?"] = "?", -- Confirm mode + ["!"] = "!", -- Shell mode + t = "TERMINAL", -- Terminal mode + } + -- Return the mode shorthand or [UNKNOWN] if no match + return mode_map[vim.fn.mode()] or "[UNKNOWN]" +end + +ins_left({ + -- mode component + mode, + 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_left({ + "diagnostics", + sources = { "nvim_diagnostic" }, + symbols = { error = " ", warn = " ", info = " " }, + diagnostics_color = { + error = { fg = colors.red }, + warn = { fg = colors.yellow }, + info = { fg = colors.cyan }, + }, +}) + +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left({ + function() + return "%=" + end, +}) + +-- Add components to right sections +ins_right({ + "o:encoding", -- option component same as &encoding in viml + fmt = string.upper, -- I'm not sure why it's upper case either ;) + cond = conditions.hide_in_width, + color = { fg = colors.green, gui = "bold" }, +}) + +ins_right({ + "fileformat", + fmt = string.upper, + icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh + color = { fg = colors.green, gui = "bold" }, +}) + +ins_right({ + "branch", + icon = "", + color = { fg = colors.violet, gui = "bold" }, +}) + +ins_right({ + "diff", + -- Is it me or the symbol for modified us really weird + symbols = { added = " ", modified = "󰝤 ", removed = " " }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.orange }, + removed = { fg = colors.red }, + }, + cond = conditions.hide_in_width, +}) + +ins_right({ + function() + return "▊" + end, + color = { fg = colors.blue }, + padding = { left = 1 }, +}) + +-- Now don't forget to initialize lualine +lualine.setup(config) diff --git a/lazyvim/.config/nvim/lua/plugins/lualine.lua b/lazyvim/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..4a641db --- /dev/null +++ b/lazyvim/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,4 @@ +return { + "nvim-lualine/lualine.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, +}