Initial commit
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
--[[
|
||||
Copyright 2023 Oscar Wallberg
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
]]
|
||||
|
||||
--- @param trunc_width number trunctates component when screen width is less then trunc_width
|
||||
--- @param trunc_len number truncates component to trunc_len number of chars
|
||||
--- @param hide_width number hides component when window width is smaller then hide_width
|
||||
--- @param no_ellipsis boolean whether to disable adding '...' at end after truncation
|
||||
--- return function that can format the component accordingly
|
||||
local function trunc(trunc_width, trunc_len, hide_width, no_ellipsis)
|
||||
return function(str)
|
||||
local win_width = vim.fn.winwidth(0)
|
||||
if hide_width and win_width < hide_width then return ''
|
||||
elseif trunc_width and trunc_len and win_width < trunc_width and #str > trunc_len then
|
||||
return str:sub(1, trunc_len) .. (no_ellipsis and '' or '...')
|
||||
end
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
--- @param trunc_len number truncates component to trunc_len number of chars
|
||||
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
|
||||
--- return function that can format the component accordingly
|
||||
local function l_trunc(trunc_len, no_ellipsis)
|
||||
return function(str)
|
||||
if #str > trunc_len then
|
||||
return (no_ellipsis and '' or '...') .. str:sub(-trunc_len, -1)
|
||||
end
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
--- @param trunc_len number truncates component to trunc_len number of chars
|
||||
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
|
||||
--- return function that can format the component accordingly
|
||||
local function r_trunc(trunc_len, no_ellipsis)
|
||||
return function(str)
|
||||
if #str > trunc_len then
|
||||
return str:sub(1, trunc_len) .. (no_ellipsis and '' or '...')
|
||||
end
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
local function short_path(len)
|
||||
return function(str)
|
||||
if #str > len then
|
||||
return vim.fn.pathshorten(str, 1)
|
||||
end
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
local function header()
|
||||
local text = short_path(40)(vim.fn.getcwd())
|
||||
local branch = r_trunc(15, false)(vim.fn.FugitiveHead())
|
||||
if branch ~= '' then
|
||||
text = text .. ' ' .. branch
|
||||
end
|
||||
return text
|
||||
end
|
||||
|
||||
require('lualine').setup ({
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
-- theme = require('config.nightfox_lualine_custom'),
|
||||
theme = 'auto',
|
||||
-- theme = "catppuccin",
|
||||
component_separators = { left = '', right = '' },
|
||||
section_separators = { left = '', right = '' },
|
||||
disabled_filetypes = { 'NvimTree', 'fugitive' },
|
||||
always_divide_middle = true,
|
||||
globalstatus = true
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { },
|
||||
lualine_b = { 'mode' },
|
||||
lualine_c = { { 'filename', path = 1 }, 'diff', {'diagnostics', sources = {'nvim_lsp'}}},
|
||||
lualine_x = { 'filetype', 'encoding', 'fileformat', 'progress' },
|
||||
lualine_y = { 'location' },
|
||||
lualine_z = { }
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = { },
|
||||
lualine_b = { },
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'location' },
|
||||
lualine_y = { },
|
||||
lualine_z = { }
|
||||
},
|
||||
-- tabline = {
|
||||
-- lualine_a = { { header } },
|
||||
-- lualine_b = { {'tabs', mode = 0 } },
|
||||
-- lualine_c = { { 'buffers', show_filename_only = true, filetype_names = { TelescopePrompt = 'Telescope', fugitive = 'Fugitive' } } },
|
||||
-- lualine_x = {},
|
||||
-- lualine_y = {},
|
||||
-- lualine_z = {}
|
||||
-- },
|
||||
extensions = { }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user