-
-
Save dharmx/47139967b0c4303572e3742af725300c to your computer and use it in GitHub Desktop.
local present, feline = pcall(require, "feline") | |
if not present then return end | |
-- Customizations {{{ | |
local theme = { | |
aqua = "#7AB0DF", | |
bg = "#1C212A", | |
blue = "#5FB0FC", | |
cyan = "#70C0BA", | |
darkred = "#FB7373", | |
fg = "#C7C7CA", | |
gray = "#222730", | |
green = "#79DCAA", | |
lime = "#54CED6", | |
orange = "#FFD064", | |
pink = "#D997C8", | |
purple = "#C397D8", | |
red = "#F87070", | |
yellow = "#FFE59E" | |
} | |
local mode_theme = { | |
["NORMAL"] = theme.green, | |
["OP"] = theme.cyan, | |
["INSERT"] = theme.aqua, | |
["VISUAL"] = theme.yellow, | |
["LINES"] = theme.darkred, | |
["BLOCK"] = theme.orange, | |
["REPLACE"] = theme.purple, | |
["V-REPLACE"] = theme.pink, | |
["ENTER"] = theme.pink, | |
["MORE"] = theme.pink, | |
["SELECT"] = theme.darkred, | |
["SHELL"] = theme.cyan, | |
["TERM"] = theme.lime, | |
["NONE"] = theme.gray, | |
["COMMAND"] = theme.blue, | |
} | |
local modes = setmetatable({ | |
["n"] = "N", | |
["no"] = "N", | |
["v"] = "V", | |
["V"] = "VL", | |
[""] = "VB", | |
["s"] = "S", | |
["S"] = "SL", | |
[""] = "SB", | |
["i"] = "I", | |
["ic"] = "I", | |
["R"] = "R", | |
["Rv"] = "VR", | |
["c"] = "C", | |
["cv"] = "EX", | |
["ce"] = "X", | |
["r"] = "P", | |
["rm"] = "M", | |
["r?"] = "C", | |
["!"] = "SH", | |
["t"] = "T", | |
}, { __index = function() return "-" end }) | |
-- }}} | |
-- Components {{{ | |
local component = {} | |
component.vim_mode = { | |
provider = function() return modes[vim.api.nvim_get_mode().mode] end, | |
hl = function() | |
return { | |
fg = "bg", | |
bg = require("feline.providers.vi_mode").get_mode_color(), | |
style = "bold", | |
name = "NeovimModeHLColor", | |
} | |
end, | |
left_sep = "block", | |
right_sep = "block", | |
} | |
component.git_branch = { | |
provider = "git_branch", | |
hl = { | |
fg = "fg", | |
bg = "bg", | |
style = "bold", | |
}, | |
left_sep = "block", | |
right_sep = "", | |
} | |
component.git_add = { | |
provider = "git_diff_added", | |
hl = { | |
fg = "green", | |
bg = "bg", | |
}, | |
left_sep = "", | |
right_sep = "", | |
} | |
component.git_delete = { | |
provider = "git_diff_removed", | |
hl = { | |
fg = "red", | |
bg = "bg", | |
}, | |
left_sep = "", | |
right_sep = "", | |
} | |
component.git_change = { | |
provider = "git_diff_changed", | |
hl = { | |
fg = "purple", | |
bg = "bg", | |
}, | |
left_sep = "", | |
right_sep = "", | |
} | |
component.separator = { | |
provider = "", | |
hl = { | |
fg = "bg", | |
bg = "bg", | |
}, | |
} | |
component.diagnostic_errors = { | |
provider = "diagnostic_errors", | |
hl = { | |
fg = "red", | |
}, | |
} | |
component.diagnostic_warnings = { | |
provider = "diagnostic_warnings", | |
hl = { | |
fg = "yellow", | |
}, | |
} | |
component.diagnostic_hints = { | |
provider = "diagnostic_hints", | |
hl = { | |
fg = "aqua", | |
}, | |
} | |
component.diagnostic_info = { | |
provider = "diagnostic_info", | |
} | |
component.lsp = { | |
provider = function() | |
if not rawget(vim, "lsp") then | |
return "" | |
end | |
local progress = vim.lsp.util.get_progress_messages()[1] | |
if vim.o.columns < 120 then | |
return "" | |
end | |
local clients = vim.lsp.get_active_clients({ bufnr = 0 }) | |
if #clients ~= 0 then | |
if progress then | |
local spinners = { | |
"◜ ", | |
"◠ ", | |
"◝ ", | |
"◞ ", | |
"◡ ", | |
"◟ ", | |
} | |
local ms = vim.loop.hrtime() / 1000000 | |
local frame = math.floor(ms / 120) % #spinners | |
local content = string.format("%%<%s", spinners[frame + 1]) | |
return content or "" | |
else | |
return "לּ LSP" | |
end | |
end | |
return "" | |
end, | |
hl = function() | |
local progress = vim.lsp.util.get_progress_messages()[1] | |
return { | |
fg = progress and "yellow" or "green", | |
bg = "gray", | |
style = "bold", | |
} | |
end, | |
left_sep = "", | |
right_sep = "block", | |
} | |
component.file_type = { | |
provider = { | |
name = "file_type", | |
opts = { | |
filetype_icon = true, | |
}, | |
}, | |
hl = { | |
fg = "fg", | |
bg = "gray", | |
}, | |
left_sep = "block", | |
right_sep = "block", | |
} | |
component.scroll_bar = { | |
provider = function() | |
local chars = setmetatable({ | |
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", | |
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", | |
}, { __index = function() return " " end }) | |
local line_ratio = vim.api.nvim_win_get_cursor(0)[1] / vim.api.nvim_buf_line_count(0) | |
local position = math.floor(line_ratio * 100) | |
local icon = chars[math.floor(line_ratio * #chars)] .. position | |
if position <= 5 then | |
icon = " TOP" | |
elseif position >= 95 then | |
icon = " BOT" | |
end | |
return icon | |
end, | |
hl = function() | |
local position = math.floor(vim.api.nvim_win_get_cursor(0)[1] / vim.api.nvim_buf_line_count(0) * 100) | |
local fg | |
local style | |
if position <= 5 then | |
fg = "aqua" | |
style = "bold" | |
elseif position >= 95 then | |
fg = "red" | |
style = "bold" | |
else | |
fg = "purple" | |
style = nil | |
end | |
return { | |
fg = fg, | |
style = style, | |
bg = "bg", | |
} | |
end, | |
left_sep = "block", | |
right_sep = "block", | |
} | |
-- }}} | |
-- Arrangements -- {{{ | |
vim.api.nvim_set_hl(0, "StatusLine", { bg = "#101317", fg = "#7AB0DF" }) | |
feline.setup({ | |
components = { | |
active = { | |
{}, -- left | |
{}, -- middle | |
{ -- right | |
component.vim_mode, | |
component.file_type, | |
component.lsp, | |
component.git_branch, | |
component.git_add, | |
component.git_delete, | |
component.git_change, | |
component.separator, | |
component.diagnostic_errors, | |
component.diagnostic_warnings, | |
component.diagnostic_info, | |
component.diagnostic_hints, | |
component.scroll_bar, | |
}, | |
}, | |
}, | |
theme = theme, | |
vi_mode_colors = mode_theme, | |
}) | |
-- }}} |
dharmx
commented
Dec 4, 2022
hey there, so if this is a stupid question but i love this theme and have spent the last few hours trying to get it to work, so maybe i'm just not understanding it. so if you have a second i would love a moment of your time for a bit of help
i have a ./nvim/lua/vulbyte/packer.lua file and a ./nvim/feline.lua, the latter containing your theme, and in the packer file (where i initialize all my packages) i attempt to init and call it with:
use("freddiehaddad/feline.nvim")
require('feline').setup()
require('feline').winbar.setup()
require('feline').statuscolumn.setup()
require('feline').add_theme('mode_theme', mode_theme)
i have attempted to modify it to be a global var but that seems to have failed as well.
sorry again if this is something obvious i'm just missing
Location of feline.lua
: ~/.config/nvim/lua/plugins/feline.lua
For packer:
use({
"freddiehaddad/feline.nvim",
config = function()
require("plugins.feline") -- the location of this GIST.
end,
})
For lazy:
{
"freddiehaddad/feline.nvim",
config = function()
require("plugins.feline") -- the location of this GIST.
end,
}
Hi dharmx! Im also amazed by your theme.
I did what you suggested to vulbyte and get this error
Error detected while processing /Users/sphyrnidae/.config/nvim/init.lua:
Invalid spec module: plugins.feline
Expected a table
of specs, but a boolean
was returned instead
Do you know what this could be?
For that to work you'd need to create a plugins folder after /Users/sphyrnidae/.config
, for instance.
Then create a file called feline.lua
and paste the contents of the gist there.
After that you'd add a new entry defining the feline.nvim plugin (if you already have them defined then use the existing one).
It is hard to say but that error seems to be lazy.nvim specific. I think you have placed the gist in your specs folder but, this gist does not follow lazy.nvim specification format.
@sphyrnidae8 I don't think it is lazy.nvim specific error. Just paste the whole gist code , in place of require("plugins.feline")
.
Or create files init.lua, dharmx.lua in lua/plugins/feline/ and call it by require("plugins.feline.dharmx") in feline/init.lua
Have started getting this error:
vim.lsp.util.get_progress_messages() is deprecated, use vim.lsp.status() instead. :help deprecated Feature will be removed in Nvim 0.11
vim.lsp.util.get_progress_messages() is deprecated, use vim.lsp.status() instead. :help deprecated
stack traceback:
...ar/neovim/0.10.0/share/nvim/runtime/lua/vim/lsp/util.lua:350: in function 'get_progress_messag
es'
....config/nvim/lua/plugins/gui-statusline/theme-dharmx.lua:187: in function 'evaluate_if_functio
n'
...cal/share/nvim/lazy/feline.nvim/lua/feline/generator.lua:424: in function <...cal/share/nvim/l
azy/feline.nvim/lua/feline/generator.lua:411>
[C]: in function 'pcall'
...cal/share/nvim/lazy/feline.nvim/lua/feline/generator.lua:498: in function 'parse_component_han
dle_errors'
...cal/share/nvim/lazy/feline.nvim/lua/feline/generator.lua:615: in function <...cal/share/nvim/l
azy/feline.nvim/lua/feline/generator.lua:534>
Its the usage of this function. Any chance of a quick fix/update?