-
-
Save hoob3rt/b200435a765ca18f09f83580a606b878 to your computer and use it in GitHub Desktop.
-- Eviline config for lualine | |
-- Author: shadmansaleh | |
-- Credit: glepnir | |
local lualine = require 'lualine' | |
-- Color table for highlights | |
local colors = { | |
bg = '#202328', | |
fg = '#bbc2cf', | |
yellow = '#ECBE7B', | |
cyan = '#008080', | |
darkblue = '#081633', | |
green = '#98be65', | |
orange = '#FF8800', | |
violet = '#a9a1e1', | |
magenta = '#c678dd', | |
blue = '#51afef', | |
red = '#ec5f67' | |
} | |
local conditions = { | |
buffer_not_empty = function() return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 end, | |
hide_in_width = function() return vim.fn.winwidth(0) > 80 end, | |
check_git_workspace = function() | |
local filepath = vim.fn.expand('%:p:h') | |
local gitdir = vim.fn.finddir('.git', filepath .. ';') | |
return gitdir and #gitdir > 0 and #gitdir < #filepath | |
end | |
} | |
-- Config | |
local config = { | |
options = { | |
-- Disable sections and component separators | |
component_separators = "", | |
section_separators = "", | |
theme = { | |
-- We are going to use lualine_c an lualine_x as left and | |
-- right section. Both are highlighted by c theme . So we | |
-- are just setting default looks o statusline | |
normal = {c = {fg = colors.fg, bg = colors.bg}}, | |
inactive = {c = {fg = colors.fg, bg = colors.bg}} | |
} | |
}, | |
sections = { | |
-- these are to remove the defaults | |
lualine_a = {}, | |
lualine_b = {}, | |
lualine_y = {}, | |
lualine_z = {}, | |
-- These will be filled later | |
lualine_c = {}, | |
lualine_x = {} | |
}, | |
inactive_sections = { | |
-- these are to remove the defaults | |
lualine_a = {}, | |
lualine_v = {}, | |
lualine_y = {}, | |
lualine_z = {}, | |
lualine_c = {}, | |
lualine_x = {} | |
} | |
} | |
-- Inserts a component in lualine_c at left section | |
local function ins_left(component) | |
table.insert(config.sections.lualine_c, component) | |
end | |
-- Inserts a component in lualine_x ot right section | |
local function ins_right(component) | |
table.insert(config.sections.lualine_x, component) | |
end | |
ins_left { | |
function() return 'β' end, | |
color = {fg = colors.blue}, -- Sets highlighting of component | |
left_padding = 0 -- We don't need space before this | |
} | |
ins_left { | |
-- mode component | |
function() | |
-- auto change color according to neovims mode | |
local mode_color = { | |
n = colors.red, | |
i = colors.green, | |
v = colors.blue, | |
[''] = colors.blue, | |
V = colors.blue, | |
c = colors.magenta, | |
no = colors.red, | |
s = colors.orange, | |
S = colors.orange, | |
[''] = colors.orange, | |
ic = colors.yellow, | |
R = colors.violet, | |
Rv = colors.violet, | |
cv = colors.red, | |
ce = colors.red, | |
r = colors.cyan, | |
rm = colors.cyan, | |
['r?'] = colors.cyan, | |
['!'] = colors.red, | |
t = colors.red | |
} | |
vim.api.nvim_command( | |
'hi! LualineMode guifg=' .. mode_color[vim.fn.mode()] .. " guibg=" .. | |
colors.bg) | |
return 'ο' | |
end, | |
color = "LualineMode", | |
left_padding = 0 | |
} | |
ins_left { | |
-- filesize component | |
function() | |
local function format_file_size(file) | |
local size = vim.fn.getfsize(file) | |
if size <= 0 then return '' end | |
local sufixes = {'b', 'k', 'm', 'g'} | |
local i = 1 | |
while size > 1024 do | |
size = size / 1024 | |
i = i + 1 | |
end | |
return string.format('%.1f%s', size, sufixes[i]) | |
end | |
local file = vim.fn.expand('%:p') | |
if string.len(file) == 0 then return '' end | |
return format_file_size(file) | |
end, | |
condition = conditions.buffer_not_empty | |
} | |
ins_left { | |
'filename', | |
condition = conditions.buffer_not_empty, | |
color = {fg = colors.magenta, gui = 'bold'} | |
} | |
ins_left {'location'} | |
ins_left {'progress', color = {fg = colors.fg, gui = 'bold'}} | |
ins_left { | |
'diagnostics', | |
sources = {'nvim_lsp'}, | |
symbols = {error = 'ο ', warn = 'ο± ', info = 'οͺ '}, | |
color_error = colors.red, | |
color_warn = colors.yellow, | |
color_info = colors.cyan | |
} | |
-- Insert mid section. You can make any number of sections in neovim :) | |
-- for lualine it's any number greater then 2 | |
ins_left {function() return '%=' end} | |
ins_left { | |
-- Lsp server name . | |
function() | |
local msg = 'No Active Lsp' | |
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') | |
local clients = vim.lsp.get_active_clients() | |
if next(clients) == nil then return msg end | |
for _, client in ipairs(clients) do | |
local filetypes = client.config.filetypes | |
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then | |
return client.name | |
end | |
end | |
return msg | |
end, | |
icon = 'ο LSP:', | |
color = {fg = '#ffffff', gui = 'bold'} | |
} | |
-- Add components to right sections | |
ins_right { | |
'o:encoding', -- option component same as &encoding in viml | |
upper = true, -- I'm not sure why it's upper case either ;) | |
condition = conditions.hide_in_width, | |
color = {fg = colors.green, gui = 'bold'} | |
} | |
ins_right { | |
'fileformat', | |
upper = true, | |
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh | |
color = {fg = colors.green, gui = 'bold'} | |
} | |
ins_right { | |
'branch', | |
icon = 'οΏ', | |
condition = conditions.check_git_workspace, | |
color = {fg = colors.violet, gui = 'bold'} | |
} | |
ins_right { | |
'diff', | |
-- Is it me or the symbol for modified us really weird | |
symbols = {added = 'οΎ ', modified = 'ο§ ', removed = 'ο '}, | |
color_added = colors.green, | |
color_modified = colors.orange, | |
color_removed = colors.red, | |
condition = conditions.hide_in_width | |
} | |
ins_right { | |
function() return 'β' end, | |
color = {fg = colors.blue}, | |
right_padding = 0 | |
} | |
-- Now don't forget to initialize lualine | |
lualine.setup(config) |
please how to use this file? i put this file in lua/statusline/, and require it in init.lua, but no statusline shows. and default lualine is disappeard too.
please how to use this file? i put this file in lua/statusline/, and require it in init.lua, but no statusline shows. and default lualine is disappeard too.
There may be some other problem if your normal status line is also disappearing. I tried this config too and it worked. Try to debug what is wrong with your status line config
im not familiar with lua, but how if I wanna change the evil icon to normal mode? (like normal/insert/command letter not evil icon)
How can I get LSP info from coc?
@FinallyFinancialFreedom you need to require it from you're init.lua . Though running it anyway will be fine . like with :source
or :luafile
. There was a bug in lualine that was causing statusline to disapear . It was fixed in shadmansaleh/lualine.nvim . You can try with that.
im not familiar with lua, but how if I wanna change the evil icon to normal mode? (like normal/insert/command letter not evil icon)
@enricofadly you can use the mode
component if you want to see things like normal/insert .
How can I get LSP info from coc?
@fgheng you'll have to add 'coc' to list of sources in line 150
EDIT: I just realized the diff shows when you save the file, not as and when you type. I checked the issues and ran the diagnostic diff
command, and it works fine. My Apologies π
Would there be any way to get the diff to update live?
Hi! Thank you for putting your config out there. The diff
block doesn't seem to be working for me - how could I best approach debugging this, and if I need to provide additional information, how could I help?
Thank you!
The internal diff implementation checks diff for file not buffer . If you have something else that tracks of buffer based diff then you can use that as data source and you'll have buffer diffs . For example I'm using gitsigns like this
.
βββ .git
βββ .gitignore
βββ node_modules
βββ package-lock.json
βββ package.json
βββ src
Normal display of branch:
nvim package.json
When I enter the src directory, the branch does not display properly:
cd src/
nvim App.tsx
This will display the branch properly again:
nvim src/App.tsx
@DemoorBug Can you reproduce this with https://github.com/shadmansaleh/lualine.nvim ?
Can you reproduce it in just that folder or in any git folder ?
This file is considered deprecated by me . Switch to
https://github.com/shadmansaleh/lualine.nvim
and grab examples/evil_lualine.lua
That one is maintained see nvim-lualine/lualine.nvim#311 for details. Make proper issue reports in the repo.
I will not respond to issues here anymore .
Any good way to get icons next to the filetype (preferably before the name of the file itself)?
EDIT: Figured it our from the README :)