Skip to content

Lsp-progress don't work at all with me #13

@melsiir

Description

@melsiir

I tried the official template but it just doesn't showing and this my config iam using lualine and termux :

-- Eviline config for lualine
-- Author: shadmansaleh
-- Credit: glepnir
local lualine = require('lualine')

local function diff_source()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed
}
end
end

local lsp = function()
local msg = ''
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
return ''
end
end
return msg
end

-- local function lsp_progress(_, is_active)
-- if not is_active then
-- return
-- end
-- local messages = vim.lsp.util.get_progress_messages()
-- if #messages == 0 then
-- return ""
-- end
-- -- dump(messages)
-- local status = {}
-- for _, msg in pairs(messages) do
-- local title = ""
-- if msg.title then
-- title = msg.title
-- end
-- -- if msg.message then
-- -- title = title .. " " .. msg.message
-- -- end
-- table.insert(status, (msg.percentage or 0) .. "%% " .. title)
-- end
-- local spinners = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }
-- local ms = vim.loop.hrtime() / 1000000
-- local frame = math.floor(ms / 120) % #spinners
-- return table.concat(status, "  ") .. " " .. spinners[frame + 1]
-- end

-- vim.cmd("au User LspProgressUpdate let &ro = &ro")

-- Color table for highlights
-- stylua: ignore
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_b = {},
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
padding = { left = 0, right = 0 }, -- We don't need space before this
})


ins_left ({
'mode',
padding = {right = 1}
})

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',
padding = { right = 0 },
})


-- ins_left({
-- -- filesize component
-- 'filesize',
-- cond = conditions.buffer_not_empty,
-- })

-- ins_left({
-- 'filename',
-- cond = conditions.buffer_not_empty,
-- color = { fg = colors.magenta, gui = 'bold' },
-- })

ins_left({
'branch',
icon = '',
color = { fg = colors.violet },
})

ins_left({
'diff',source = diff_source,
-- Is it me or the symbol for modified us really weird
symbols = { added = ' ', modified = '柳 ', removed = ' ' },
diff_color = {
added = { fg = colors.green },
modified = { fg = colors.orange },
removed = { fg = colors.red },
},
-- cond = conditions.hide_in_width,
})

ins_left({
'diagnostics',
sources = { 'nvim_diagnostic' },
symbols = { error = ' ', warn = ' ', info = ' ' },
diagnostics_color = {
color_error = { fg = colors.red },
color_warn = { fg = colors.yellow },
color_info = { fg = 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,
-- })

-- Add components to right sections
-- ins_right({
-- 'o:encoding', -- option component same as &encoding in viml
-- fmt = string.upper, -- I'm not sure why it's upper case either ;)
-- cond = conditions.hide_in_width,
-- color = { fg = colors.green, gui = 'bold' },
-- })

-- ins_right({
-- 'fileformat',
-- fmt = string.upper,
-- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
-- color = { fg = colors.green, gui = 'bold' },
-- })

ins_left ({
'lsp_progress',
display_components = { 'lsp_client_name', 'spinner' },
-- With spinner
-- display_components = { 'lsp_client_name', 'spinner', { 'title', 'percentage', 'message' }},
colors = {
percentage = colors.cyan,
title = colors.cyan,
message = colors.cyan,
spinner = colors.cyan,
lsp_client_name = colors.magenta,
use = true,
},
separators = {
component = ' ',
progress = ' | ',
message = { pre = '(', post = ')'},
percentage = { pre = '', post = '%% ' },
title = { pre = '', post = ': ' },
lsp_client_name = { pre = '[', post = ']' },
spinner = { pre = '', post = '' },
message = { commenced = 'In Progress', completed = 'Completed' },
},
display_components = { 'lsp_client_name', 'spinner', { 'title', 'percentage', 'message' } },
timer = { progress_enddelay = 500, spinner = 1000, lsp_client_name_enddelay = 1000 },
spinner_symbols = { '🌑 ', '🌒 ', '🌓 ', '🌔 ', '🌕 ', '🌖 ', '🌗 ', '🌘 ' },
})

ins_right({
-- Lsp server name .
-- 'lsp_progress',
lsp,
-- lsp_progress,
-- icon = ' LSP:',
color = { fg = '#ffffff'},
padding = { left = 0, right = 0 },
})

ins_right({ 'location',color = { fg = colors.blue },
padding = { left = 0, right = 0 },
})

ins_right({ 'progress', color = { fg = colors.fg, gui = 'bold' },padding = { left = 0, right = 0 }, })

ins_right({
function()
return '▊'
end,
color = { fg = colors.blue },
padding = { left = 1 },
})

-- Now don't forget to initialize lualine
lualine.setup(config)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions