@@ -1,14 +1,5 @@
local colors = require ( " colors " ) . get ( )
local present1 , gl = pcall ( require , " galaxyline " )
local present2 , condition = pcall ( require , " galaxyline.condition " )
if not ( present1 or present2 ) then
return
end
local gls = gl.section
gl.short_line_list = { " " }
local lsp = require " feline.providers.lsp "
local icon_styles = {
default = {
@@ -18,7 +9,6 @@ local icon_styles = {
vi_mode_icon = " " ,
position_icon = " " ,
} ,
arrow = {
left = " " ,
right = " " ,
@@ -55,252 +45,242 @@ local icon_styles = {
local user_statusline_style = require ( " core.utils " ) . load_config ( ) . ui.plugin . statusline.style
local statusline_style = icon_styles [ user_statusline_style ]
local left_separator = statusline_style.left
local right_separator = statusline_style.right
-- Initialize the components table
local components = {
left = { active = { } , inactive = { } } ,
mid = { active = { } , inactive = { } } ,
right = { active = { } , inactive = { } } ,
}
gls.left [ 1 ] = {
FirstElement = {
components.left . active [ 1 ] = {
provider = statusline_style.main_icon ,
hl = {
fg = colors.statusline_bg ,
bg = colors.nord_blue ,
} ,
right_sep = { str = statusline_style.right , hl = {
fg = colors.nord_blue ,
bg = colors.one_bg2 ,
} } ,
}
components.left . active [ 2 ] = {
provider = statusline_style.right ,
hl = {
fg = colors.one_bg2 ,
bg = colors.lightbg ,
} ,
}
components.left . active [ 3 ] = {
provider = function ( )
return " ▋ "
end ,
highlight = { colors.nord_blue , colors.nord_blue } ,
} ,
}
gls.left [ 2 ] = {
statusIcon = {
provider = function ( )
return statusline_style.main_icon
end ,
highlight = { colors.statusline_bg , colors.nord_blue } ,
separator = right_separator ,
separator_highlight = { colors.nord_blue , colors.one_bg2 } ,
} ,
}
gls.left [ 3 ] = {
left_arow2 = {
provider = function ( ) end ,
separator = right_separator .. " " ,
separator_highlight = { colors.one_bg2 , colors.lightbg } ,
} ,
}
gls.left [ 4 ] = {
FileIcon = {
provider = " FileIcon " ,
condition = condition.buffer_not_empty ,
highlight = { colors.white , colors.lightbg } ,
} ,
}
gls.left [ 5 ] = {
FileName = {
provider = function ( )
local fileinfo = require " galaxyline.provider_fileinfo "
if vim.api . nvim_buf_get_name ( 0 ) : len ( ) == 0 then
return " "
local filename = vim.fn . expand " %:t "
local extension = vim.fn . expand " %:e "
local icon = require ( " nvim-web-devicons " ) . get_icon ( filename , extension )
if icon == nil then
icon = " "
return icon
end
return fileinfo.get_current_file_name ( " " , " " )
return icon .. " " .. filename .. " "
end ,
highlight = { colors.white , colors.lightbg } ,
separator = right_separator ,
separator_highlight = { colors.lightbg , colors.lightbg2 } ,
hl = {
fg = colors.white ,
bg = colors.lightbg ,
} ,
right_sep = { str = statusline_style.right , hl = { fg = colors.lightbg , bg = colors.lightbg2 } } ,
}
gls.left [ 6 ] = {
current_dir = {
components.left . active [ 4 ] = {
provider = function ( )
local dir_name = vim.fn . fnamemodify ( vim.fn . getcwd ( ) , " :t " )
return " " .. dir_name .. " "
return " " .. dir_name .. " "
end ,
highlight = { colors.grey_fg2 , colors.lightbg2 } ,
separator = right_separator ,
separator_highlight = { colors.lightbg2 , colors.statusline_bg } ,
hl = {
fg = colors.grey_fg2 ,
bg = colors.lightbg2 ,
} ,
right_sep = { str = statusline_style.right , hi = {
fg = colors.lightbg2 ,
bg = colors.statusline_bg ,
} } ,
}
local checkwidth = function ( )
local squeeze_width = vim.fn . winwidth ( 0 ) / 2
if squeeze_width > 30 then
return true
end
return false
end
gls.left [ 7 ] = {
DiffAdd = {
provider = " DiffAdd " ,
condition = checkwidth ,
icon = " " ,
highlight = { colors.white , colors.statusline_bg } ,
components.left . active [ 5 ] = {
provider = " git_diff_added " ,
hl = {
fg = colors.grey_fg2 ,
bg = colors.statusline_bg ,
} ,
icon = " " ,
}
gls.left [ 8 ] = {
DiffModified = {
provider = " DiffModified " ,
condition = checkwidth ,
-- diffModfified
components.left . active [ 6 ] = {
provider = " git_diff_changed " ,
hl = {
fg = colors.grey_fg2 ,
bg = colors.statusline_bg ,
} ,
icon = " " ,
highlight = { colors.grey_fg2 , colors.statusline_bg } ,
} ,
}
gls.left [ 9 ] = {
D iffR emove = {
provider = " DiffRemove " ,
condition = checkwidth ,
-- diffRemove
components.left . active [ 7 ] = {
provider = " git_d iff_r emoved " ,
hl = {
fg = colors.grey_fg2 ,
bg = colors.statusline_bg ,
} ,
icon = " " ,
highlight = { colors.grey_fg2 , colors.statusline_bg } ,
} ,
}
gls.left [ 10 ] = {
D iagnosticE rror = {
provider = " DiagnosticError " ,
components.left . active [ 8 ] = {
provider = " d iagnostic_e rrors " ,
enabled = function ( )
return lsp.diagnostics_exist " Error "
end ,
hl = { fg = colors.red } ,
icon = " " ,
highlight = { colors.red , colors.statusline_bg } ,
} ,
}
gls.left [ 11 ] = {
D iagnosticW arn = {
provider = " DiagnosticWarn " ,
components.left . active [ 9 ] = {
provider = " d iagnostic_w arnings " ,
enabled = function ( )
return lsp.diagnostics_exist " Warning "
end ,
hl = { fg = colors.yellow } ,
icon = " " ,
highlight = { colors.yellow , colors.statusline_bg } ,
} ,
}
gls.right [ 1 ] = {
lsp_status = {
components.left . active [ 10 ] = {
provider = " diagnostic_hints " ,
enabled = function ( )
return lsp.diagnostics_exist " Hint "
end ,
hl = { fg = colors.grey_fg2 } ,
icon = " " ,
}
components.left . active [ 11 ] = {
provider = " diagnostic_info " ,
enabled = function ( )
return lsp.diagnostics_exist " Information "
end ,
hl = { fg = colors.green } ,
icon = " " ,
}
components.right . active [ 1 ] = {
provider = function ( )
local clients = vim.lsp . get_active_clients ( )
if next ( clients ) ~= nil then
local buf_ft = vim.api . nvim_buf_get_option ( 0 , " filetype " )
for _ , client in ipairs ( clients ) do
local filetypes = client.config . filetypes
if filetypes and vim.fn . index ( filetypes , buf_ft ) ~= - 1 then
if lsp.is_lsp_attached then
return " " .. " " .. " LSP "
end
end
return " "
else
return " "
end
end ,
highlight = { colors.grey_fg2 , colors.statusline_bg } ,
} ,
hl = { fg = colors.grey_fg2, bg = colors.statusline_bg } ,
}
gls.right [ 2 ] = {
GitIcon = {
provider = function ( )
return " "
end ,
condition = require ( " galaxyline.condition " ) . check_git_workspace ,
highlight = { colors.grey_fg2 , colors.statusline_bg } ,
separator = " " ,
separator_highlight = { colors.statusline_bg , colors.statusline_bg } ,
components.right . active [ 2 ] = {
provider = " git_branch " ,
hl = {
fg = colors.grey_fg2 ,
bg = colors.statusline_bg ,
} ,
icon = " " ,
}
gls.right [ 3 ] = {
GitBranch = {
provider = " GitBranch " ,
condition = require ( " galaxyline.condition " ) . check_git_workspace ,
highlight = { colors.grey_fg2 , colors.statusline_bg } ,
components.right . active [ 3 ] = {
provider = " " .. statusline_style.left ,
hl = {
fg = colors.one_bg2 ,
bg = colors.statusline_bg ,
} ,
}
local mode_colors = {
[ ' n ' ] = { " NORMAL " , colors.red } ,
[ ' no' ] = { " N-PENDING " , colors.red } ,
[ ' i ' ] = { " INSERT " , colors.dark_purple } ,
[ ' ic' ] = { " INSERT " , colors.dark_purple } ,
[ ' t ' ] = { " TERMINAL " , colors.green } ,
[ ' v ' ] = { " VISUAL " , colors.cyan } ,
[ ' V ' ] = { " V-LINE " , colors.cyan } ,
[ ' ' ] = { " V-BLOCK " , colors.cyan } ,
[ ' R ' ] = { " REPLACE " , colors.orange } ,
[ ' Rv' ] = { " V-REPLACE " , colors.orange } ,
[ ' s ' ] = { " SELECT " , colors.nord_blue } ,
[ ' S ' ] = { " S-LINE " , colors.nord_blue } ,
[ ' ' ] = { " S-BLOCK " , colors.nord_blue } ,
[ ' c ' ] = { " COMMAND " , colors.pink } ,
[ ' cv' ] = { " COMMAND " , colors.pink } ,
[ ' ce' ] = { " COMMAND " , colors.pink } ,
[ ' r ' ] = { " PROMPT " , colors.teal } ,
[ ' rm' ] = { " MORE " , colors.teal } ,
[ ' r?' ] = { " CONFIRM " , colors.teal } ,
[ ' ! ' ] = { " SHELL " , colors.green } ,
[ " n " ] = { " NORMAL " , colors.red } ,
[ " no" ] = { " N-PENDING " , colors.red } ,
[ " i " ] = { " INSERT " , colors.dark_purple } ,
[ " ic" ] = { " INSERT " , colors.dark_purple } ,
[ " t " ] = { " TERMINAL " , colors.green } ,
[ " v " ] = { " VISUAL " , colors.cyan } ,
[ " V " ] = { " V-LINE " , colors.cyan } ,
[ " " ] = { " V-BLOCK " , colors.cyan } ,
[ " R " ] = { " REPLACE " , colors.orange } ,
[ " Rv" ] = { " V-REPLACE " , colors.orange } ,
[ " s " ] = { " SELECT " , colors.nord_blue } ,
[ " S " ] = { " S-LINE " , colors.nord_blue } ,
[ " " ] = { " S-BLOCK " , colors.nord_blue } ,
[ " c " ] = { " COMMAND " , colors.pink } ,
[ " cv" ] = { " COMMAND " , colors.pink } ,
[ " ce" ] = { " COMMAND " , colors.pink } ,
[ " r " ] = { " PROMPT " , colors.teal } ,
[ " rm" ] = { " MORE " , colors.teal } ,
[ " r?" ] = { " CONFIRM " , colors.teal } ,
[ " ! " ] = { " SHELL " , colors.green } ,
}
local mode = function ( n )
return mode_colors [ vim.fn . mode ( ) ] [ n ]
local chad_ mode_hl = function ( )
return {
fg = mode_colors [ vim.fn . mode ( ) ] [ 2 ] ,
bg = colors.one_bg ,
}
end
gls.right [ 4 ] = {
left_arrow = {
provider = function ( ) end ,
separator = " " .. left_separator ,
separator_highlight = { colors.one_bg2 , colors.statusline_bg } ,
} ,
}
gls.right [ 5 ] = {
left_round = {
provider = function ( )
vim.cmd ( " hi Galaxyleft_round guifg= " .. mode ( 2 ) )
return left_separator
components.right . active [ 4 ] = {
provider = statusline_style.left ,
hl = function ( )
return {
fg = mode_colors [ vim.fn . mode ( ) ] [ 2 ] ,
bg = colors.one_bg2 ,
}
end ,
highlight = { " GalaxyViMode " , colors.one_bg2 } ,
} ,
}
gls.right [ 6 ] = {
viM ode_icon = {
provider = function ( )
vim.cmd ( " hi GalaxyviMode_icon guibg= " .. mode ( 2 ) )
return statusline_style.vi_mode_icon
components.right . active [ 5 ] = {
provider = statusline_style.vi_m ode_icon,
hl = function ( )
return {
fg = colors.statusline_bg ,
bg = mode_colors [ vim.fn . mode ( ) ] [ 2 ] ,
}
end ,
highlight = { colors.statusline_bg , colors.red } ,
} ,
}
gls.right [ 7 ] = {
ViMode = {
components.right . active [ 6 ] = {
provider = function ( )
vim.cmd ( " hi GalaxyViMode guifg= " .. mode ( 2 ) )
return " " .. mode ( 1 ) .. " "
return " " .. mode_colors [ vim.fn . mode ( ) ] [ 1 ] .. " "
end ,
highlight = { " GalaxyViMode " , colors.lightbg } ,
hl = chad_mode_hl ,
}
components.right . active [ 7 ] = {
provider = statusline_style.left ,
hl = {
fg = colors.grey ,
bg = colors.one_bg ,
} ,
}
gls.right [ 8 ] = {
left_arrow2 = {
provider = function ( ) end ,
separator = left_separator ,
separator_highlight = { colors.grey , colors.lightbg } ,
components.right . active [ 8 ] = {
provider = statusline_style.left ,
hl = {
fg = colors.green ,
bg = colors.grey ,
} ,
}
gls.right [ 9 ] = {
some_RoundIcon = {
provider = function ( )
return statusline_style.position_icon
end ,
separator = left_separator ,
separator_highlight = { colors.green , colors.grey } ,
highlight = { colors.lightbg , colors.green } ,
components.right . active [ 9 ] = {
provider = statusline_style.position_icon ,
hl = {
fg = colors.black ,
bg = colors.gre en,
} ,
}
gls.right [ 10 ] = {
line_percentage = {
components.right . active [ 10 ] = {
provider = function ( )
local current_line = vim.fn . line " . "
local total_line = vim.fn . line " $ "
@@ -311,8 +291,17 @@ gls.right[10] = {
return " Bot "
end
local result , _ = math.modf ( ( current_line / total_line ) * 100 )
return " " .. result .. " % "
return " " .. result .. " % "
end ,
highlight = { colors.green , colors.lightbg } ,
hl = {
fg = colors.green ,
bg = colors.one_bg ,
} ,
}
require ( " feline " ) . setup {
default_bg = colors.statusline_bg ,
default_fg = colors.fg ,
components = components ,
}