-
-
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?