A performant Neovim plugin that displays LSP progress status in the statusline with O(1) complexity.
lsp-progress.nvim is a Neovim plugin that displays real-time progress updates from Language Server Protocol servers in the statusline. It shows when language servers are performing operations like indexing, analyzing, or formatting code, giving developers visual feedback about background processes. The plugin is designed with performance in mind, using efficient caching to avoid UI lag.
Neovim users who work with LSP servers and want clear visual indicators of background language server activity. Particularly useful for developers using statusline plugins like lualine.nvim or heirline.nvim.
Developers choose lsp-progress.nvim for its exceptional performance (O(1) complexity), clean integration with popular statusline plugins, and highly customizable display options. Unlike alternatives, it focuses specifically on progress reporting without unnecessary bloat.
A performant lsp progress status for Neovim.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a 2-layer caching system to achieve O(1) time complexity on LSP progress updates, ensuring minimal UI lag even with multiple active clients, as detailed in the Performance section.
Offers extensive formatting options through Lua functions, allowing control over client names, spinners, percentages, and completion indicators, with examples like green-check icons shown in the README.
Designed to work with popular statusline plugins like lualine.nvim and heirline.nvim, providing clear integration code and event handling for automatic refreshes.
Emits LspProgressStatusUpdated user events to trigger statusline refreshes only when progress changes, reducing unnecessary redraws and improving responsiveness.
Requires Nerd fonts for icons, which may not be pre-installed on all systems, adding an extra setup step and potential compatibility issues.
Integrating with statusline plugins requires manual configuration, event handling, and workarounds for lazy loading issues, as highlighted in the README's 'Important' note.
Focused solely on statusline display; lacks support for alternative UI elements like popups or standalone windows, which might be preferred by users wanting more visible feedback.