
new terminal, telescope plugins moved into telescope.lua for eassier management and a lot more
100 lines
2.2 KiB
Lua
100 lines
2.2 KiB
Lua
local M = {}
|
|
|
|
M.winbar_filetype_exclude = {
|
|
"help",
|
|
"startify",
|
|
"dashboard",
|
|
"packer",
|
|
"neogitstatus",
|
|
"neo-tree",
|
|
"Trouble",
|
|
"alpha",
|
|
"lir",
|
|
"Outline",
|
|
"spectre_panel",
|
|
"toggleterm",
|
|
}
|
|
|
|
local get_filename = function()
|
|
local filename = vim.fn.expand("%:t")
|
|
local extension = vim.fn.expand("%:e")
|
|
local f = require("user.functions")
|
|
|
|
if not f.isempty(filename) then
|
|
local file_icon, file_icon_color =
|
|
require("nvim-web-devicons").get_icon_color(filename, extension, { default = true })
|
|
|
|
local hl_group = "FileIconColor" .. extension
|
|
|
|
vim.api.nvim_set_hl(0, hl_group, { fg = file_icon_color })
|
|
if f.isempty(file_icon) then
|
|
file_icon = ""
|
|
file_icon_color = ""
|
|
end
|
|
|
|
return " " .. "%#" .. hl_group .. "#" .. file_icon .. "%*" .. " " .. "%#LineNr#" .. filename .. "%*"
|
|
end
|
|
end
|
|
|
|
local get_gps = function()
|
|
local status_gps_ok, gps = pcall(require, "nvim-gps")
|
|
if not status_gps_ok then
|
|
return ""
|
|
end
|
|
|
|
local status_ok, gps_location = pcall(gps.get_location, {})
|
|
if not status_ok then
|
|
return ""
|
|
end
|
|
|
|
if not gps.is_available() or gps_location == "error" then
|
|
return ""
|
|
end
|
|
|
|
if not require("user.functions").isempty(gps_location) then
|
|
return require("user.icons").ui.ChevronRight .. " " .. gps_location
|
|
else
|
|
return ""
|
|
end
|
|
end
|
|
|
|
local excludes = function()
|
|
if vim.tbl_contains(M.winbar_filetype_exclude, vim.bo.filetype) then
|
|
vim.opt_local.winbar = nil
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
M.get_winbar = function()
|
|
if excludes() then
|
|
return
|
|
end
|
|
local f = require("user.functions")
|
|
local value = get_filename()
|
|
|
|
local gps_added = false
|
|
if not f.isempty(value) then
|
|
local gps_value = get_gps()
|
|
value = value .. " " .. gps_value
|
|
if not f.isempty(gps_value) then
|
|
gps_added = true
|
|
end
|
|
end
|
|
|
|
if not f.isempty(value) and f.get_buf_option("mod") then
|
|
local mod = "%#LineNr#" .. require("user.icons").ui.Circle .. "%*"
|
|
if gps_added then
|
|
value = value .. " " .. mod
|
|
else
|
|
value = value .. mod
|
|
end
|
|
end
|
|
|
|
local status_ok, _ = pcall(vim.api.nvim_set_option_value, "winbar", value, { scope = "local" })
|
|
if not status_ok then
|
|
return
|
|
end
|
|
end
|
|
|
|
return M
|