196 lines
8.1 KiB
Lua
196 lines
8.1 KiB
Lua
return {
|
|
{
|
|
"AstroNvim/astroui",
|
|
---@type AstroUIOpts
|
|
opts = {
|
|
colorscheme = "cyberdream",
|
|
-- add new user interface icon
|
|
icons = {
|
|
VimIcon = "",
|
|
ScrollText = "",
|
|
GitBranch = "",
|
|
GitAdd = "",
|
|
GitChange = "",
|
|
GitDelete = "",
|
|
},
|
|
-- modify variables used by heirline but not defined in the setup call directly
|
|
status = {
|
|
-- define the separators between each section
|
|
separators = {
|
|
left = { "", "" }, -- separator for the left side of the statusline
|
|
right = { "", "" }, -- separator for the right side of the statusline
|
|
tab = { "", "" },
|
|
},
|
|
-- add new colors that can be used by heirline
|
|
colors = function(hl)
|
|
local get_hlgroup = require("astroui").get_hlgroup
|
|
-- use helper function to get highlight group properties
|
|
local comment_fg = get_hlgroup("Comment").fg
|
|
hl.git_branch_fg = comment_fg
|
|
hl.git_added = comment_fg
|
|
hl.git_changed = comment_fg
|
|
hl.git_removed = comment_fg
|
|
hl.blank_bg = get_hlgroup("Folded").fg
|
|
hl.file_info_bg = get_hlgroup("Visual").bg
|
|
hl.nav_icon_bg = get_hlgroup("String").fg
|
|
hl.nav_fg = hl.nav_icon_bg
|
|
hl.folder_icon_bg = get_hlgroup("Error").fg
|
|
return hl
|
|
end,
|
|
attributes = {
|
|
mode = { bold = true },
|
|
},
|
|
icon_highlights = {
|
|
file_icon = {
|
|
statusline = false,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"rebelot/heirline.nvim",
|
|
opts = function(_, opts)
|
|
local status = require "astroui.status"
|
|
opts.statusline = {
|
|
-- default highlight for the entire statusline
|
|
hl = { fg = "fg", bg = "bg" },
|
|
-- each element following is a component in astroui.status module
|
|
|
|
-- add the vim mode component
|
|
status.component.mode {
|
|
-- enable mode text with padding as well as an icon before it
|
|
mode_text = {
|
|
icon = { kind = "VimIcon", padding = { right = 1, left = 1 } },
|
|
},
|
|
-- surround the component with a separators
|
|
surround = {
|
|
-- it's a left element, so use the left separator
|
|
separator = "left",
|
|
-- set the color of the surrounding based on the current mode using astronvim.utils.status module
|
|
color = function() return { main = status.hl.mode_bg(), right = "blank_bg" } end,
|
|
},
|
|
},
|
|
-- we want an empty space here so we can use the component builder to make a new section with just an empty string
|
|
status.component.builder {
|
|
{ provider = "" },
|
|
-- define the surrounding separator and colors to be used inside of the component
|
|
-- and the color to the right of the separated out section
|
|
surround = {
|
|
separator = "left",
|
|
color = { main = "blank_bg", right = "file_info_bg" },
|
|
},
|
|
},
|
|
-- add a section for the currently opened file information
|
|
status.component.file_info {
|
|
-- enable the file_icon and disable the highlighting based on filetype
|
|
filename = { fallback = "Empty" },
|
|
-- disable some of the info
|
|
filetype = false,
|
|
file_read_only = false,
|
|
-- add padding
|
|
padding = { right = 1 },
|
|
-- define the section separator
|
|
surround = { separator = "left", condition = false },
|
|
},
|
|
-- add a component for the current git branch if it exists and use no separator for the sections
|
|
status.component.git_branch {
|
|
git_branch = { padding = { left = 1 } },
|
|
surround = { separator = "none" },
|
|
},
|
|
-- add a component for the current git diff if it exists and use no separator for the sections
|
|
status.component.git_diff {
|
|
padding = { left = 1 },
|
|
surround = { separator = "none" },
|
|
},
|
|
-- fill the rest of the statusline
|
|
-- the elements after this will appear in the middle of the statusline
|
|
status.component.fill(),
|
|
-- add a component to display if the LSP is loading, disable showing running client names, and use no separator
|
|
status.component.lsp {
|
|
lsp_client_names = false,
|
|
surround = { separator = "none", color = "bg" },
|
|
},
|
|
-- fill the rest of the statusline
|
|
-- the elements after this will appear on the right of the statusline
|
|
status.component.fill(),
|
|
-- add a component for the current diagnostics if it exists and use the right separator for the section
|
|
status.component.diagnostics { surround = { separator = "right" }, padding = { right = 1 } },
|
|
-- add a component to display LSP clients, disable showing LSP progress, and use the right separator
|
|
status.component.lsp {
|
|
lsp_progress = false,
|
|
padding = { right = 1 },
|
|
surround = { separator = "right" },
|
|
},
|
|
-- NvChad has some nice icons to go along with information, so we can create a parent component to do this
|
|
-- all of the children of this table will be treated together as a single component
|
|
{
|
|
flexible = 1,
|
|
{
|
|
-- define a simple component where the provider is just a folder icon
|
|
status.component.builder {
|
|
-- astronvim.get_icon gets the user interface icon for a closed folder with a space after it
|
|
{ provider = require("astroui").get_icon "FolderClosed" },
|
|
-- add padding after icon
|
|
padding = { right = 1 },
|
|
-- set the foreground color to be used for the icon
|
|
hl = { fg = "bg" },
|
|
-- use the right separator and define the background color
|
|
surround = { separator = "right", color = "folder_icon_bg" },
|
|
},
|
|
-- add a file information component and only show the current working directory name
|
|
status.component.file_info {
|
|
-- we only want filename to be used and we can change the fname
|
|
-- function to get the current working directory name
|
|
filename = {
|
|
fname = function(nr) return vim.fn.getcwd(nr) end,
|
|
padding = { left = 1, right = 1 },
|
|
},
|
|
-- disable all other elements of the file_info component
|
|
filetype = false,
|
|
file_icon = false,
|
|
file_modified = false,
|
|
file_read_only = false,
|
|
-- use no separator for this part but define a background color
|
|
surround = {
|
|
separator = "none",
|
|
color = "file_info_bg",
|
|
condition = false,
|
|
},
|
|
},
|
|
},
|
|
{},
|
|
},
|
|
-- the final component of the NvChad statusline is the navigation section
|
|
-- this is very similar to the previous current working directory section with the icon
|
|
{ -- make nav section with icon border
|
|
-- define a custom component with just a file icon
|
|
status.component.builder {
|
|
{ provider = require("astroui").get_icon "ScrollText" },
|
|
-- add padding after icon
|
|
padding = { right = 1 },
|
|
-- set the icon foreground
|
|
hl = { fg = "bg" },
|
|
-- use the right separator and define the background color
|
|
-- as well as the color to the left of the separator
|
|
surround = {
|
|
separator = "right",
|
|
color = { main = "nav_icon_bg", left = "file_info_bg" },
|
|
},
|
|
},
|
|
-- add a navigation component and just display the percentage of progress in the file
|
|
status.component.nav {
|
|
-- add some padding for the percentage provider
|
|
percentage = { padding = { right = 1 } },
|
|
-- disable all other providers
|
|
ruler = false,
|
|
scrollbar = false,
|
|
-- use no separator and define the background color
|
|
surround = { separator = "none", color = "file_info_bg" },
|
|
},
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
}
|