Compare commits
No commits in common. "a8c1fa25b72483225a233329ed36e4d3e6d014bd" and "75b544e352c55aab752649a8bc10c7f7188d1e59" have entirely different histories.
a8c1fa25b7
...
75b544e352
8 changed files with 66 additions and 112 deletions
|
@ -42,11 +42,11 @@ M.open_float = function(opts) vim.diagnostic.open_float(opts) end
|
|||
---Toggle diagnostics in the given buffer.
|
||||
---@param bufnr integer|nil: Buffer number (0 for current buffer, nil for all buffers.
|
||||
M.toggle = function(bufnr)
|
||||
local filter = { bufnr = bufnr or 0 }
|
||||
if vim.diagnostic.is_enabled(filter) then
|
||||
vim.diagnostic.enable(false, filter)
|
||||
bufnr = bufnr or 0
|
||||
if vim.diagnostic.is_disabled(bufnr) then
|
||||
vim.diagnostic.enable(bufnr)
|
||||
else
|
||||
vim.diagnostic.enable(true, filter)
|
||||
vim.diagnostic.disable(bufnr)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -4,76 +4,34 @@ return {
|
|||
dependencies = "nvim-tree/nvim-web-devicons",
|
||||
|
||||
opts = function()
|
||||
local icons = require("fschauen.util.icons")
|
||||
local dynamic_color = require("fschauen.util.lualine").dynamic_color
|
||||
local indicator = require("fschauen.util.lualine").indicator
|
||||
local window = require("fschauen.util.window")
|
||||
local orange = "#d65d0e"
|
||||
|
||||
local is_diagnostics_enabled = function(bufnr)
|
||||
return vim.diagnostic.is_enabled { bufnr = bufnr or 0 }
|
||||
end
|
||||
|
||||
--
|
||||
-- Components
|
||||
--
|
||||
|
||||
local autoformat = indicator {
|
||||
icon = icons.ui.Format,
|
||||
cond = require("fschauen.util.autoformat").is_enabled,
|
||||
}
|
||||
local autoformat = require("fschauen.util.autoformat").lualine()
|
||||
local branch = {
|
||||
"branch",
|
||||
icon = icons.git.Branch,
|
||||
cond = window.is_medium,
|
||||
}
|
||||
local diagnostics = {
|
||||
dynamic_color("diagnostics"),
|
||||
cond = is_diagnostics_enabled,
|
||||
}
|
||||
local diag_status = indicator {
|
||||
icon = icons.ui.Diagnostic,
|
||||
cond = is_diagnostics_enabled,
|
||||
}
|
||||
local fileformat = {
|
||||
"fileformat",
|
||||
icon = require("fschauen.util.icons").git.Branch,
|
||||
cond = window.is_medium,
|
||||
}
|
||||
local diagnostics = dynamic_color("diagnostics")
|
||||
local fileformat = { "fileformat", cond = window.is_medium }
|
||||
local filename = "fschauen.filename"
|
||||
local filetype = {
|
||||
dynamic_color("filetype"),
|
||||
cond = window.is_medium,
|
||||
}
|
||||
local filetype = { dynamic_color("filetype"), cond = window.is_medium }
|
||||
local mode = "fschauen.mode"
|
||||
local searchcount = "fschauen.searchcount"
|
||||
local spell = indicator {
|
||||
icon = icons.ui.SpellCheck,
|
||||
cond = function() return vim.o.spell end,
|
||||
}
|
||||
local status = {
|
||||
dynamic_color("fschauen.status"),
|
||||
color = { fg = orange },
|
||||
padding = 0,
|
||||
}
|
||||
local whitespace = {
|
||||
dynamic_color("fschauen.whitespace"),
|
||||
cond = window.is_wide,
|
||||
}
|
||||
local wrap = indicator {
|
||||
icon = icons.ui.TextWrap,
|
||||
cond = function() return vim.o.wrap end,
|
||||
}
|
||||
|
||||
--
|
||||
-- Sections
|
||||
--
|
||||
local spell = "fschauen.spell"
|
||||
local status =
|
||||
{ dynamic_color("fschauen.status"), color = { fg = orange }, padding = 0 }
|
||||
local whitespace = { dynamic_color("fschauen.whitespace"), cond = window.is_wide }
|
||||
local wrap = "fschauen.wrap"
|
||||
|
||||
local sections = {
|
||||
lualine_a = { mode },
|
||||
lualine_b = { branch },
|
||||
lualine_c = { filename, status },
|
||||
lualine_x = { diagnostics, searchcount, whitespace, filetype },
|
||||
lualine_y = { diag_status, spell, wrap, autoformat, fileformat, "progress" },
|
||||
lualine_y = { spell, wrap, autoformat, fileformat, "progress" },
|
||||
lualine_z = { "location" },
|
||||
}
|
||||
|
||||
|
|
|
@ -4,18 +4,18 @@ M._augroup = nil
|
|||
|
||||
---Whether autoformatting is enabled.
|
||||
---@return boolean
|
||||
M.is_enabled = function() return M._augroup ~= nil end
|
||||
local is_enabled = function() return M._augroup ~= nil end
|
||||
|
||||
---Disable autoformatting.
|
||||
M.disable = function()
|
||||
if not M.is_enabled() then return end
|
||||
if not is_enabled() then return end
|
||||
vim.api.nvim_del_augroup_by_id(M._augroup)
|
||||
M._augroup = nil
|
||||
end
|
||||
|
||||
---Enable autoformatting.
|
||||
M.enable = function()
|
||||
if M.is_enabled() then return end
|
||||
if is_enabled() then return end
|
||||
|
||||
local ok, formatter = pcall(require, "formatter.format")
|
||||
if not ok then
|
||||
|
@ -34,11 +34,21 @@ end
|
|||
|
||||
---Toggle autoformatting.
|
||||
M.toggle = function()
|
||||
if M.is_enabled() then
|
||||
if is_enabled() then
|
||||
M.disable()
|
||||
else
|
||||
M.enable()
|
||||
end
|
||||
end
|
||||
|
||||
---Create a lualine component that shows an icon when autoformatting is enabled.
|
||||
---@return table component
|
||||
M.lualine = function()
|
||||
local icon = require("fschauen.util.icons").ui.Format
|
||||
return {
|
||||
function() return icon end,
|
||||
cond = is_enabled,
|
||||
}
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
@ -119,11 +119,9 @@ M.ui = {
|
|||
ReadOnly = "", -- "RO",
|
||||
Search = "", --
|
||||
Sleep = "",
|
||||
SpellCheck = "",
|
||||
Telescope = "",
|
||||
TestTube = "", --
|
||||
Text = "",
|
||||
TextWrap = "",
|
||||
Toggle = "",
|
||||
TrafficLight = "",
|
||||
Tree = "",
|
||||
|
|
|
@ -38,37 +38,4 @@ M.dynamic_color = function(base)
|
|||
return component
|
||||
end
|
||||
|
||||
---@class LualineIndicatorSpec
|
||||
---@field icon string The icon to show when the indicator is active.
|
||||
---@field cond function A function that returns true when the indicator should
|
||||
--- be visible, false otherwise.
|
||||
|
||||
---Make a lualine indicator that shows an icon when a condition is true.
|
||||
---@param spec LualineIndicatorSpec
|
||||
---@return table component
|
||||
M.indicator = function(spec)
|
||||
vim.validate {
|
||||
spec = { spec, "table" },
|
||||
icon = { spec.icon, "string" },
|
||||
cond = { spec.cond, "function" },
|
||||
}
|
||||
|
||||
local component = require("lualine.component"):extend()
|
||||
|
||||
function component:init(options)
|
||||
component.super.init(
|
||||
self,
|
||||
vim.tbl_deep_extend(
|
||||
"keep",
|
||||
options or {},
|
||||
{ cond = spec.cond or function() return false end }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
function component:update_status(--[[is_focused]]_) return spec.icon or "?" end
|
||||
|
||||
return component
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
@ -6,29 +6,22 @@ function M:init(options)
|
|||
vim.tbl_extend("keep", options or {}, {
|
||||
maxcount = 999,
|
||||
timeout = 250,
|
||||
cond = function() return vim.v.hlsearch == 1 end,
|
||||
})
|
||||
)
|
||||
end
|
||||
|
||||
local denominator = function(tbl)
|
||||
if tbl.total > tbl.maxcount then return "" end
|
||||
return string.format("%d", tbl.total)
|
||||
end
|
||||
|
||||
local render = function(tbl)
|
||||
local status = "?"
|
||||
if not vim.tbl_isempty(tbl) and vim.v.hlsearch == 1 then
|
||||
status = string.format("%d/%s", tbl.current, denominator(tbl))
|
||||
end
|
||||
return string.format(" %s", status)
|
||||
end
|
||||
|
||||
function M:update_status()
|
||||
return render(vim.fn.searchcount {
|
||||
if vim.v.hlsearch == 0 then return "" end
|
||||
|
||||
local count = vim.fn.searchcount {
|
||||
maxcount = self.options.maxcount,
|
||||
timeout = self.options.timeout,
|
||||
})
|
||||
}
|
||||
if next(count) == nil then return "" end
|
||||
|
||||
local denominator = count.total > count.maxcount and ""
|
||||
or string.format("%d", count.total)
|
||||
return string.format(" %d/%s", count.current, denominator)
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
14
config/nvim/lua/lualine/components/fschauen/spell.lua
Normal file
14
config/nvim/lua/lualine/components/fschauen/spell.lua
Normal file
|
@ -0,0 +1,14 @@
|
|||
local M = require("lualine.component"):extend()
|
||||
|
||||
function M:init(options)
|
||||
M.super.init(
|
||||
self,
|
||||
vim.tbl_deep_extend("keep", options or {}, {
|
||||
cond = function() return vim.o.spell end,
|
||||
})
|
||||
)
|
||||
end
|
||||
|
||||
function M:update_status(--[[is_focused]]_) return "" end
|
||||
|
||||
return M
|
14
config/nvim/lua/lualine/components/fschauen/wrap.lua
Normal file
14
config/nvim/lua/lualine/components/fschauen/wrap.lua
Normal file
|
@ -0,0 +1,14 @@
|
|||
local M = require("lualine.component"):extend()
|
||||
|
||||
function M:init(options)
|
||||
M.super.init(
|
||||
self,
|
||||
vim.tbl_deep_extend("keep", options or {}, {
|
||||
cond = function() return vim.o.wrap end,
|
||||
})
|
||||
)
|
||||
end
|
||||
|
||||
function M:update_status(--[[is_focused]]_) return "" end
|
||||
|
||||
return M
|
Loading…
Add table
Reference in a new issue