Skip to content
mikkurogue

mikkurogue/peekr.nvim

A Neovim plugin that provides a floating peek UI for LSP locations -- definitions, references, implementations, call hierarchy, and more

Small neovim plugin for floating window LSP peek ui for definitions, references, symbols etc.

4 1 since joining 0LuaPush 21h agoListed 12d agoMIT
lspneovimneovim-pluginpeekplugin
  • Lua100.0%
View on GitHub

Report a problem

1 Review

Peekr.nvim is a strong early-stage Neovim plugin with a clear purpose: making LSP location workflows feel closer to an IDE “peek” experience without leaving the editor context. The README does a good job explaining the value proposition, and the feature set is already more complete than many first releases: definitions, references, implementations, declarations, call hierarchy, document/workspace symbols, foldable file groups, Tree-sitter preview highlighting, quickfix/Trouble integration, session resume, customizable mappings, hooks, and custom LSP method registration. The repository is small and easy to navigate, with the core split sensibly across lsp.lua, list.lua, preview.lua, renderer.lua, config.lua, and UI helpers like winbar.lua and highlights.lua.

The implementation shows thoughtful Neovim-specific design. I especially like the LSP abstraction in lua/peekr/lsp.lua, where built-in methods are registered in one table and custom methods can be added through the public API. The preview/list separation is also clean, and the plugin handles practical details such as offset encoding, tagstack integration, quickfix population, resize handling, colorscheme-safe highlight groups, and preview buffer cleanup. The README screenshot, command table, configuration example, API section, and MIT license make the project approachable for users who want to try it quickly.

The main constructive improvement would be project hardening. There are currently no visible tests, CI workflow, formatter config, lint config, or contribution guide. For a Neovim plugin that manipulates windows, buffers, autocmds, LSP responses, and external file loading, even a small Plenary/Busted test suite would add confidence around result transformation, range handling, grouping, folding, and custom method registration. A GitHub Actions workflow that runs stylua plus headless Neovim tests would make future changes safer. I would also expand the README with a short “known limitations” or compatibility section.