- Fix keymap conflicts: session (<leader>sS/sR), substitute (<leader>sl) - Remove duplicate keymaps (window, resize) and options (synmaxcol, foldmethod) - Add which-key group names for better keymap organization - Add auto-format on save with smart filtering (conform.nvim) - Add diagnostic float on hover (CursorHold) - Add safe buffer close with unsaved changes confirmation - Add quickfix/location list navigation keymaps - Add startup config validation (nvim version, executables) - Enable plugin update notifications in lazy.nvim - Clean up: remove temporary files (kkk, cleanup script) - Clean up: remove commented code and fix double function loading - Update README.md with comprehensive documentation - Add CHANGELOG.md tracking all changes
117 lines
3.3 KiB
Lua
117 lines
3.3 KiB
Lua
return {
|
|
"nvim-lualine/lualine.nvim",
|
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
config = function()
|
|
local lualine = require("lualine")
|
|
local lazy_status = require("lazy.status") -- to configure lazy pending updates count
|
|
|
|
local colors = {
|
|
blue = "#65D1FF",
|
|
green = "#3EFFDC",
|
|
violet = "#FF61EF",
|
|
yellow = "#FFDA7B",
|
|
red = "#FF4A4A",
|
|
fg = "#c3ccdc",
|
|
bg = "#112638",
|
|
inactive_bg = "#2c3043",
|
|
}
|
|
|
|
local my_lualine_theme = {
|
|
normal = {
|
|
a = { bg = colors.blue, fg = colors.bg, gui = "bold" },
|
|
b = { bg = colors.bg, fg = colors.fg },
|
|
c = { bg = colors.bg, fg = colors.fg },
|
|
},
|
|
insert = {
|
|
a = { bg = colors.green, fg = colors.bg, gui = "bold" },
|
|
b = { bg = colors.bg, fg = colors.fg },
|
|
c = { bg = colors.bg, fg = colors.fg },
|
|
},
|
|
visual = {
|
|
a = { bg = colors.violet, fg = colors.bg, gui = "bold" },
|
|
b = { bg = colors.bg, fg = colors.fg },
|
|
c = { bg = colors.bg, fg = colors.fg },
|
|
},
|
|
command = {
|
|
a = { bg = colors.yellow, fg = colors.bg, gui = "bold" },
|
|
b = { bg = colors.bg, fg = colors.fg },
|
|
c = { bg = colors.bg, fg = colors.fg },
|
|
},
|
|
replace = {
|
|
a = { bg = colors.red, fg = colors.bg, gui = "bold" },
|
|
b = { bg = colors.bg, fg = colors.fg },
|
|
c = { bg = colors.bg, fg = colors.fg },
|
|
},
|
|
inactive = {
|
|
a = { bg = colors.inactive_bg, fg = colors.semilightgray, gui = "bold" },
|
|
b = { bg = colors.inactive_bg, fg = colors.semilightgray },
|
|
c = { bg = colors.inactive_bg, fg = colors.semilightgray },
|
|
},
|
|
}
|
|
|
|
-- Custom word counter function
|
|
local function word_count()
|
|
-- Skip for very large files to avoid performance issues
|
|
local line_count = vim.api.nvim_buf_line_count(0)
|
|
if line_count > 10000 then
|
|
return ""
|
|
end
|
|
|
|
local words = 0
|
|
|
|
-- Get all lines at once for better performance
|
|
local all_lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
|
|
|
|
for _, line in ipairs(all_lines) do
|
|
if line and #line > 0 then
|
|
-- Count words (non-whitespace sequences)
|
|
for _ in line:gmatch("%S+") do
|
|
words = words + 1
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Format: show only word count
|
|
return string.format("%d words", words)
|
|
end
|
|
|
|
-- configure lualine with modified theme
|
|
lualine.setup({
|
|
options = {
|
|
theme = my_lualine_theme,
|
|
},
|
|
sections = {
|
|
lualine_a = { "mode" },
|
|
lualine_b = { "branch", "diff", "diagnostics" },
|
|
lualine_c = { "filename" },
|
|
lualine_x = {
|
|
{
|
|
lazy_status.updates,
|
|
cond = lazy_status.has_updates,
|
|
color = { fg = "#ff9e64" },
|
|
},
|
|
{ "encoding" },
|
|
{ "fileformat" },
|
|
{ "filetype" },
|
|
},
|
|
lualine_y = { "progress" },
|
|
lualine_z = {
|
|
{
|
|
word_count,
|
|
color = { fg = colors.fg },
|
|
},
|
|
{ "location" },
|
|
},
|
|
},
|
|
inactive_sections = {
|
|
lualine_a = { "filename" },
|
|
lualine_b = {},
|
|
lualine_c = {},
|
|
lualine_x = {},
|
|
lualine_y = {},
|
|
lualine_z = { "location" },
|
|
},
|
|
})
|
|
end,
|
|
}
|