new: Added lsp-progress.nvim

This commit is contained in:
Sayantan Santra 2024-03-27 15:18:42 -05:00
parent 2cc1fc0fb5
commit d029e2a06e
Signed by: SinTan1729
GPG key ID: EB3E68BFBA25C85F
6 changed files with 71 additions and 4 deletions

View file

@ -66,6 +66,7 @@ require("lazy").setup(
"junegunn/fzf.vim",
"karb94/neoscroll.nvim",
"hiphish/rainbow-delimiters.nvim",
"linrongbin16/lsp-progress.nvim",
},
{
lockfile = vim.fn.stdpath("config") .. "/config/lazy-lock.json",

View file

@ -0,0 +1,50 @@
require("lsp-progress").setup({
client_format = function(client_name, spinner, series_messages)
if #series_messages == 0 then
return nil
end
return {
name = client_name,
body = spinner .. " " .. table.concat(series_messages, ", "),
}
end,
format = function(client_messages)
--- @param name string
--- @param msg string?
--- @return string
local function stringify(name, msg)
return msg and string.format("%s %s", name, msg) or name
end
local sign = "" -- nf-fa-gear \uf013
local lsp_clients = vim.lsp.get_active_clients()
local messages_map = {}
for _, climsg in ipairs(client_messages) do
messages_map[climsg.name] = climsg.body
end
if #lsp_clients > 0 then
table.sort(lsp_clients, function(a, b)
return a.name < b.name
end)
local builder = {}
for _, cli in ipairs(lsp_clients) do
if
type(cli) == "table"
and type(cli.name) == "string"
and string.len(cli.name) > 0
then
if messages_map[cli.name] then
table.insert(builder, stringify(cli.name, messages_map[cli.name]))
else
table.insert(builder, stringify(cli.name))
end
end
end
if #builder > 0 then
return sign .. " " .. table.concat(builder, ", ")
end
end
return ""
end,
})

View file

@ -1,13 +1,29 @@
require("lualine").setup{
require("lualine").setup {
options = {
theme = 'moonfly',
},
tabline = {
lualine_a = {'buffers'},
lualine_a = { 'buffers' },
lualine_b = {},
lualine_c = {},
lualine_x = {},
lualine_y = {'filename'},
lualine_z = {'tabs'},
lualine_y = { 'filename' },
lualine_z = { 'tabs' },
},
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { 'filename', require('lsp-progress').progress },
lualine_x = { 'encoding', 'fileformat', 'filetype' },
lualine_y = { 'progress' },
lualine_z = { 'location' }
},
}
-- listen lsp-progress event and refresh lualine
vim.api.nvim_create_augroup("lualine_augroup", { clear = true })
vim.api.nvim_create_autocmd("User", {
group = "lualine_augroup",
pattern = "LspProgressStatusUpdated",
callback = require("lualine").refresh,
})