Squashed 'users/configs/system/nvim/nvim/' content from commit e088bce2
git-subtree-dir: users/configs/system/nvim/nvim git-subtree-split: e088bce2bd90c0b5c35d13a8615a55455b96294d
This commit is contained in:
143
lua/astronvim/utils/status/env.lua
Normal file
143
lua/astronvim/utils/status/env.lua
Normal file
@@ -0,0 +1,143 @@
|
||||
--- ### AstroNvim Status Environment
|
||||
--
|
||||
-- Statusline related environment variables shared between components/providers/etc.
|
||||
--
|
||||
-- This module can be loaded with `local env = require "astronvim.utils.status.env"`
|
||||
--
|
||||
-- @module astronvim.utils.status.env
|
||||
-- @copyright 2023
|
||||
-- @license GNU General Public License v3.0
|
||||
|
||||
local M = {}
|
||||
|
||||
M.fallback_colors = {
|
||||
none = "NONE",
|
||||
fg = "#abb2bf",
|
||||
bg = "#1e222a",
|
||||
dark_bg = "#2c323c",
|
||||
blue = "#61afef",
|
||||
green = "#98c379",
|
||||
grey = "#5c6370",
|
||||
bright_grey = "#777d86",
|
||||
dark_grey = "#5c5c5c",
|
||||
orange = "#ff9640",
|
||||
purple = "#c678dd",
|
||||
bright_purple = "#a9a1e1",
|
||||
red = "#e06c75",
|
||||
bright_red = "#ec5f67",
|
||||
white = "#c9c9c9",
|
||||
yellow = "#e5c07b",
|
||||
bright_yellow = "#ebae34",
|
||||
}
|
||||
|
||||
M.modes = {
|
||||
["n"] = { "NORMAL", "normal" },
|
||||
["no"] = { "OP", "normal" },
|
||||
["nov"] = { "OP", "normal" },
|
||||
["noV"] = { "OP", "normal" },
|
||||
["no"] = { "OP", "normal" },
|
||||
["niI"] = { "NORMAL", "normal" },
|
||||
["niR"] = { "NORMAL", "normal" },
|
||||
["niV"] = { "NORMAL", "normal" },
|
||||
["i"] = { "INSERT", "insert" },
|
||||
["ic"] = { "INSERT", "insert" },
|
||||
["ix"] = { "INSERT", "insert" },
|
||||
["t"] = { "TERM", "terminal" },
|
||||
["nt"] = { "TERM", "terminal" },
|
||||
["v"] = { "VISUAL", "visual" },
|
||||
["vs"] = { "VISUAL", "visual" },
|
||||
["V"] = { "LINES", "visual" },
|
||||
["Vs"] = { "LINES", "visual" },
|
||||
[""] = { "BLOCK", "visual" },
|
||||
["s"] = { "BLOCK", "visual" },
|
||||
["R"] = { "REPLACE", "replace" },
|
||||
["Rc"] = { "REPLACE", "replace" },
|
||||
["Rx"] = { "REPLACE", "replace" },
|
||||
["Rv"] = { "V-REPLACE", "replace" },
|
||||
["s"] = { "SELECT", "visual" },
|
||||
["S"] = { "SELECT", "visual" },
|
||||
[""] = { "BLOCK", "visual" },
|
||||
["c"] = { "COMMAND", "command" },
|
||||
["cv"] = { "COMMAND", "command" },
|
||||
["ce"] = { "COMMAND", "command" },
|
||||
["r"] = { "PROMPT", "inactive" },
|
||||
["rm"] = { "MORE", "inactive" },
|
||||
["r?"] = { "CONFIRM", "inactive" },
|
||||
["!"] = { "SHELL", "inactive" },
|
||||
["null"] = { "null", "inactive" },
|
||||
}
|
||||
|
||||
M.separators = astronvim.user_opts("heirline.separators", {
|
||||
none = { "", "" },
|
||||
left = { "", " " },
|
||||
right = { " ", "" },
|
||||
center = { " ", " " },
|
||||
tab = { "", " " },
|
||||
breadcrumbs = " ",
|
||||
path = " ",
|
||||
})
|
||||
|
||||
M.attributes = astronvim.user_opts("heirline.attributes", {
|
||||
buffer_active = { bold = true, italic = true },
|
||||
buffer_picker = { bold = true },
|
||||
macro_recording = { bold = true },
|
||||
git_branch = { bold = true },
|
||||
git_diff = { bold = true },
|
||||
})
|
||||
|
||||
M.icon_highlights = astronvim.user_opts("heirline.icon_highlights", {
|
||||
file_icon = {
|
||||
tabline = function(self) return self.is_active or self.is_visible end,
|
||||
statusline = true,
|
||||
},
|
||||
})
|
||||
|
||||
local function pattern_match(str, pattern_list)
|
||||
for _, pattern in ipairs(pattern_list) do
|
||||
if str:find(pattern) then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
M.buf_matchers = {
|
||||
filetype = function(pattern_list, bufnr) return pattern_match(vim.bo[bufnr or 0].filetype, pattern_list) end,
|
||||
buftype = function(pattern_list, bufnr) return pattern_match(vim.bo[bufnr or 0].buftype, pattern_list) end,
|
||||
bufname = function(pattern_list, bufnr)
|
||||
return pattern_match(vim.fn.fnamemodify(vim.api.nvim_buf_get_name(bufnr or 0), ":t"), pattern_list)
|
||||
end,
|
||||
}
|
||||
|
||||
M.sign_handlers = {}
|
||||
-- gitsigns handlers
|
||||
local gitsigns = function(_)
|
||||
local gitsigns_avail, gitsigns = pcall(require, "gitsigns")
|
||||
if gitsigns_avail then vim.schedule(gitsigns.preview_hunk) end
|
||||
end
|
||||
for _, sign in ipairs { "Topdelete", "Untracked", "Add", "Changedelete", "Delete" } do
|
||||
local name = "GitSigns" .. sign
|
||||
if not M.sign_handlers[name] then M.sign_handlers[name] = gitsigns end
|
||||
end
|
||||
-- diagnostic handlers
|
||||
local diagnostics = function(args)
|
||||
if args.mods:find "c" then
|
||||
vim.schedule(vim.lsp.buf.code_action)
|
||||
else
|
||||
vim.schedule(vim.diagnostic.open_float)
|
||||
end
|
||||
end
|
||||
for _, sign in ipairs { "Error", "Hint", "Info", "Warn" } do
|
||||
local name = "DiagnosticSign" .. sign
|
||||
if not M.sign_handlers[name] then M.sign_handlers[name] = diagnostics end
|
||||
end
|
||||
-- DAP handlers
|
||||
local dap_breakpoint = function(_)
|
||||
local dap_avail, dap = pcall(require, "dap")
|
||||
if dap_avail then vim.schedule(dap.toggle_breakpoint) end
|
||||
end
|
||||
for _, sign in ipairs { "", "Rejected", "Condition" } do
|
||||
local name = "DapBreakpoint" .. sign
|
||||
if not M.sign_handlers[name] then M.sign_handlers[name] = dap_breakpoint end
|
||||
end
|
||||
M.sign_handlers = astronvim.user_opts("heirline.sign_handlers", M.sign_handlers)
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user