83 lines
2.3 KiB
Lua
83 lines
2.3 KiB
Lua
local function LSP_progress()
|
|
if not rawget(vim, "lsp") then
|
|
return ""
|
|
end
|
|
|
|
local Lsp = vim.lsp.util.get_progress_messages()[1]
|
|
|
|
if vim.o.columns < 120 or not Lsp then
|
|
return ""
|
|
end
|
|
|
|
local msg = Lsp.message or ""
|
|
local percentage = Lsp.percentage or 0
|
|
local title = Lsp.title or ""
|
|
local spinners = { "", "" }
|
|
local ms = vim.loop.hrtime() / 1000000
|
|
local frame = math.floor(ms / 120) % #spinners
|
|
local content = string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
|
|
|
|
return ("%#St_LspProgress#" .. content) or ""
|
|
end
|
|
|
|
-- Lsp server name .
|
|
local function lsp_server()
|
|
local msg = '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
|
|
|
|
require('lualine').setup {
|
|
options = {
|
|
icons_enabled = true,
|
|
theme = 'auto',
|
|
component_separators = { left = '', right = '' },
|
|
section_separators = { left = '', right = '' },
|
|
disabled_filetypes = {
|
|
statusline = {},
|
|
winbar = {},
|
|
},
|
|
ignore_focus = {},
|
|
always_divide_middle = true,
|
|
globalstatus = false,
|
|
refresh = {
|
|
statusline = 1000,
|
|
tabline = 1000,
|
|
winbar = 1000,
|
|
}
|
|
},
|
|
sections = {
|
|
lualine_a = { 'mode' },
|
|
lualine_b = { 'branch', 'diff', 'diagnostics' },
|
|
lualine_c = {
|
|
{ lsp_server, icon = ' ', color = { fg = '#ffffff', gui = 'bold' } },
|
|
{ "filename", path = 1, symbols = { modified = " ", readonly = "", unnamed = "" } }
|
|
},
|
|
lualine_x = { LSP_progress, 'encoding', 'fileformat', 'filetype' },
|
|
lualine_y = { 'progress' },
|
|
lualine_z = { 'location' }
|
|
},
|
|
inactive_sections = {
|
|
lualine_a = {},
|
|
lualine_b = {},
|
|
lualine_c = { 'filename' },
|
|
lualine_x = { 'location' },
|
|
lualine_y = {},
|
|
lualine_z = {}
|
|
},
|
|
tabline = {},
|
|
winbar = {},
|
|
inactive_winbar = {},
|
|
extensions = {}
|
|
}
|