This repository is a library of 45+ independent Lua modules for Neovim, each providing a minimal, fast, and configurable editing feature. It is not a data research project. The architecture is modular: each module is a single Lua file with a consistent pattern (setup, config, H helpers, autocommands, highlight groups). Modules can be used individually or together. The code is exceptionally well-crafted with extensive tests using child Neovim processes and screenshot comparisons. Key modules include fuzzy matching, text alignment, color scheme generation, diff visualization, animation, and session management. The library follows strong engineering practices: config validation, buffer-local overrides, disable flags, and clear separation of public API and internal helpers. Documentation is auto-generated from annotations. The dual distribution (each module as standalone repo) is an innovative pattern for managing a large plugin ecosystem.
This repository is the core implementation of **coc.nvim**, a powerful Language Server Protocol (LSP) client and extension host for Neovim and Vim. It transforms these editors into full-featured IDEs by managing the lifecycle of language servers and providing rich features like intelligent code completion, diagnostics, refactoring, navigation, and snippet expansion. The architecture is a monolithic Node.js backend that communicates with the editor via RPC (`@chemzqm/neovim`), with a Lua bridge for performance-critical text operations and a sophisticated extension system that allows users to install and manage third-party plugins. The codebase demonstrates a high degree of engineering craftsmanship. It features a clean, event-driven architecture with extensive use of the Disposable and CancellationToken patterns for resource management. Notable subsystems include a highly optimized fuzzy matching engine with WASM support, a complete Model Context Protocol (MCP) server for AI agent integration, a robust configuration system with layered scoping, and a secure download/extraction utility. The project maintains an exceptionally large and well-structured test suite covering unit, integration, and handler-level scenarios. Currently, the project is in an **active** maintenance state with very low technical drift. It aggressively tracks the latest Node.js versions and LSP protocol extensions. While the sheer size of the codebase introduces some inherent complexity and a few deprecated internal APIs, the overall architecture is sound, the code is well-factored, and several components are genuinely reusable in other projects. It stands as a benchmark for how to build a complex, high-performance editor plugin.
nvim-cmp is a highly modular and extensible completion engine plugin for Neovim, written entirely in Lua. It provides a framework for registering completion sources (e.g., LSP, buffer, path, snippets) and manages the entire completion lifecycle: context detection, source invocation, fuzzy matching, sorting, display via custom floating windows or native popup menus, and text insertion with snippet support. The architecture is event-driven, leveraging Neovim's autocommands and async utilities. Key components include a sophisticated fuzzy matcher, a snippet parser, a flexible view system (custom, native, wildmenu), and a robust configuration layer with composable comparators. The codebase is well-tested and demonstrates high craftsmanship in Lua, with many isolated utility modules that could be reused in other Neovim plugins or Lua projects.
This is a Neovim plugin that animates the cursor with a smear effect, inspired by Neovide's animated cursor. It works in any terminal by using floating windows and Unicode block characters to render a smooth, physics-based trailing cursor. The plugin listens to cursor movement events and interpolates the cursor position using a spring-damper system, drawing the smear as a quad with sub-cell precision. It supports configurable stiffness, damping, particles, and various rendering modes (vertical bar, horizontal bar, diagonal blocks, braille). The codebase is modular, with clear separation between animation logic, drawing, color management, and event handling. The drawing module is particularly noteworthy for its sophisticated use of Unicode symbols to achieve anti-aliased-like rendering in a terminal environment.
LazyVim is a curated Neovim configuration distribution and framework built on top of the lazy.nvim plugin manager. It provides a fast, modular, and opinionated IDE setup out of the box, with sane defaults for options, keymaps, and autocmds, plus an extensive system of optional 'extras' covering languages, editors, AI tools, UI enhancements, and more. The core architecture is a set of well-structured Lua modules that define a setup function, health checks, LSP integration, formatting, picker abstraction, and root directory detection. Users customize by adding plugin specs in their own lua/plugins/ directory or by enabling extras via the :LazyExtras command. The codebase is actively maintained with frequent releases, thorough testing, and detailed changelogs covering breaking changes and migrations. Although primarily a Neovim configuration, it exhibits application-level patterns such as a formal plugin specification API, an abstraction layer for pickers, and a modular extra system that could inform other tool configuration frameworks.
Overseer.nvim is a robust task runner and job management plugin for Neovim, enabling users to define, execute, and manage asynchronous commands directly within the editor. It supports a wide array of build tools and task frameworks through extensible templates, including Make, npm, Cargo, Just, and VS Code tasks. The plugin features a modular architecture built around an entity-component system, where tasks are augmented with composable components that hook into lifecycle events (start, output, exit, result) for custom behavior such as diagnostics integration, quickfix updates, notifications, and output parsing. It provides a rich UI with a sidebar task list, floating output windows, and in-buffer task editors, along with keymap configuration and integrations with neotest, lualine, and nvim-dap. The codebase is well-organized with clear separation of concerns, exposing reusable utilities for shell escaping, output parsing, keymap definition, and window layout management.
Baleia.nvim is a Neovim plugin that colorizes text with ANSI escape sequences (8, 16, 256 or TrueColor). It processes buffers containing ANSI codes, strips them from the text while applying appropriate syntax highlighting, and supports both manual and automatic colorization modes. The architecture features modular Lua components handling ANSI parsing (ansi.lua), lexical analysis (lexer.py), asynchronous processing (scheduler.lua), and Neovim highlight rendering (renderer.lua). The plugin integrates with Neovim's buffer system through autocommands and API functions, efficiently handling large files via chunked processing.
grug-far.nvim is a Neovim plugin providing an interactive find-and-replace workflow using ripgrep and ast-grep as search backends. It presents a dedicated buffer with editable input fields (search pattern, replacement, files filter, flags, paths) and renders results with highlighting, folding, and line-level diff markers. The plugin supports multiple search engines and replacement interpreters (Lua, Vimscript), history persistence, preview, quickfix integration, and instance-level API for programmatic control. The architecture is modular: an engine abstraction layer, async job processing with libuv, a rendering system using Neovim extmarks, and a task lifecycle manager. It includes a comprehensive screenshot-based test suite and CI workflows. The codebase demonstrates strong software craftsmanship with clean abstractions, reusable patterns, and extensive documentation.
The Neovim project manager plugin is a Lua-based Neovim plugin designed to streamline project workflow by maintaining a history of visited projects and enabling quick restoration of Neovim sessions (including UI state like neo-tree expanded directories) upon switching projects. It integrates with popular fuzzy finders (telescope, fzf-lua, snacks) for project selection and supports optional per-branch session management for Git repositories. The architecture is modular, separating concerns into distinct modules: configuration handling, project lifecycle management, history persistence, path and glob pattern resolution, Git integration, and session-specific payload storage (for neo-tree state). The plugin leverages Neovim's autocommands to synchronize session saving/loading with project switches and Git branch changes, ensuring a seamless user experience. Key strengths include robust glob pattern handling (with correct support for **, *, ?, and character classes), a self-healing history mechanism that automatically reloads when the history file is modified externally, and thoughtful integration with Neo-tree to restore UI state. The plugin demonstrates attention to detail in edge cases, such as handling symlinks in project paths and detecting Git worktrees.
NeoCodeium is a Neovim plugin that provides AI-powered code completion using the Windsurf (formerly Codeium) service. It features a modular architecture with separate modules for state management, completion logic, rendering, server communication, and utility functions. The plugin integrates with Neovim's autocommands to provide real-time suggestions as virtual text, supports cycling through completions, accepting partial suggestions, and includes a chat interface via the Windsurf service. It is designed to be highly configurable and works alongside other completion plugins like nvim-cmp and blink.cmp.
fff (Fast File Finder) is a high-performance file search and content grep toolkit written in Rust, designed for long-running applications like code editors, AI agents, and file explorers. It provides fuzzy filename search with typo resistance, live content grep (plain text, regex, fuzzy), directory search, glob filtering, and git-aware frecency ranking. The core library maintains a persistent in-memory index with a bigram-based content prefilter, an LMDB-backed frecency and query history store, and a live filesystem watcher for incremental updates. The system is exposed through multiple interfaces: a Neovim plugin with a full TUI picker UI, an MCP server for AI assistants (Claude Code, Codex), language bindings for Python, Node.js, and Bun, and a C FFI for embedding in other languages. The architecture is a Rust core library with multiple frontends communicating via FFI or direct Rust API, all sharing the same `FilePicker` instance that manages indexing, searching, and watching. The codebase demonstrates exceptional performance engineering with SIMD-optimized string operations, compressed inverted indexes, arena-based path storage, and careful concurrency design with thread pools and lock-free snapshots.
nvim-tree/nvim-tree.lua is a mature Neovim file explorer plugin written entirely in Lua. It provides a tree-view sidebar with file system operations, git status indicators, diagnostic integration (LSP/COC), file filtering, bookmarks, clipboard management, and extensive customization. The architecture is modular, with clearly separated concerns: an explorer module handles tree construction and traversal; a view module manages the floating or split window; a renderer with a decorator pattern applies icons and highlights; a git module runs async git status queries; and an actions layer handles file create/rename/delete/trash. It uses an internal event system, filesystem watchers via libuv, and a public API for user extensions. The codebase demonstrates solid Lua craftsmanship, including a fluent node iterator, a classic OOP library, and a config validation recursive checker. It is actively maintained, with continuous adaptation to Neovim API changes and cross-platform support.
render-markdown.nvim is a Neovim plugin that transforms raw Markdown files into a richer, more readable in-editor experience. Instead of opening an external preview window, it hooks into Neovim's tree‑sitter parser to understand the Markdown AST and overlays virtual text, highlights, signs, and concealments directly onto the buffer. It handles headings, code blocks, tables, checkboxes, callouts, LaTeX math, wikilinks, HTML tags, and YAML frontmatter, with full support for custom icons and per‑element styling. The plugin is pure Lua and requires Neovim ≥ 0.9.0 (recommended ≥ 0.10.0) and a Nerd Font for optimal icon display. The architecture is modular and layered. The main entry point `setup()` in `init.lua` merges user configuration with default presets and per‑buffer overrides. The `core/` directory manages the rendering lifecycle: `manager.lua` attaches to buffers and schedules renders, `handlers.lua` dispatches per‑language tree‑sitter parser requests, and `ui.lua` applies the resulting extmarks to visible windows. Each Markdown element (heading, code block, table, etc.) has its own renderer under `render/markdown/`, all inheriting from a common base class in `render/base.lua`. Utility modules in `lib/` provide reusable primitives for interval arithmetic, extmark lifecycle, virtual text construction, line manipulation, and configuration schema validation. The plugin also integrates with completion engines (nvim‑cmp, blink.cmp, coq_nvim) through a shared completion source in `integ/source.lua`. Code quality is high: the codebase includes an extensive test suite (unit, integration, and visual regression tests), benchmarks for performance on large files, a health check for dependencies, and a LuaRocks CI pipeline. The documentation includes a custom handler interface for user extensions, detailed troubleshooting guides, and auto‑generated type documentation. Despite a large configuration surface, schema validation and preset overrides keep the system flexible yet robust. The main risks are dependency on tree‑sitter grammar internals and Neovim API version changes, but the project is actively maintained and adapts quickly to ecosystem shifts.
no-neck-pain.nvim is a Neovim plugin that centers the focused buffer in the middle of the screen by creating empty side buffers. It provides a non-opinionated, highly configurable zen-like editing experience without the intrusive UI changes typical of other 'distraction-free' plugins. The plugin manages window layout across multiple tabs, supports splits/vsplits, and integrates with popular file trees (NvimTree, Neo-tree), dashboards (alpha, snacks), and other tools like undotree, neotest, nvim-dap-ui, outline, and aerial. The architecture is modular Lua with clear separation into configuration, state management, UI creation, color handling, and utility modules. The core logic revolves around dynamic layout scanning via Neovim's winlayout API, event-driven re-initialization, and per-tab state tracking.
This Neovim plugin provides a polished interface for invoking LSP code actions (refactorings, quickfixes, etc.) with real-time diff previews. It supports multiple picker frameworks (telescope, fzf-lua, snacks, vim.ui.select, and a custom buffer picker) and diff backends (vim, delta, difftastic, diff-so-fancy). The architecture is modular: a finder module collects actions from all LSP clients, filters and sorts them, then passes them to a configurable picker. The plugin handles action resolution (LSP resolveProvider), preview generation, and application of workspace edits. It is well-structured with base classes for pickers, previewers, and diff backends, making it easy to extend. The buffer picker is particularly sophisticated, offering hotkeys, category grouping, nested group support, and auto-preview.
obsidian.nvim is a Neovim plugin that integrates Obsidian vault functionality directly into Neovim. It provides note creation, linking, completion, navigation, image handling, synchronization, and templating features for markdown-based notes. The plugin leverages Neovim's API for LSP integration, autocommands, buffer management, and picker interfaces (telescope, fzf, snacks, mini) to deliver an Obsidian-like experience within Neovim. It maintains a cache of note metadata for performance and supports multiple workspaces with per-workspace overrides. The architecture is modular, separating concerns into commands, LSP handlers, note management, workspace handling, caching, search, picker abstraction, and completion sources.
asyncomplete.vim is a Vim and Neovim plugin that provides asynchronous autocompletion using timers. It allows completion sources to be registered and triggered without blocking the editor. The architecture centers around a core completion engine that manages sources, triggers, and popup menu display. Key features include context-aware completion triggering, support for various change detection mechanisms (autocommands or timers), and a flexible source registration system. The plugin depends only on Vim 8+ or Neovim with timers feature, integrating with Vim's native complete() function for popup menu handling.
milli.nvim is a Neovim plugin for animated ASCII splash screens. It provides both pre-rendered splash animations (like fire, blackhole, skeleton) and live procedural shaders (plasma, rain, doomfire, starfield) all implemented in pure Lua using Neovim’s extmarks for coloring. The plugin integrates seamlessly with popular dashboard plugins (dashboard-nvim, alpha-nvim, snacks.nvim, mini.starter) via autocmds and preset functions. It also includes a community registry for sharing splash data, with a sandboxed loading mechanism to prevent arbitrary code execution. The codebase demonstrates careful engineering: anchor-based positioning to handle variable terminal sizes, color-run optimisation to stay within Neovim’s highlight-group limit (E849), and deterministic pseudorandom number generation in shaders to avoid corrupting math.random. The external CLI tool (npm package `milli`) allows users to generate their own splashes from images or GIFs, and the data format is simple and portable. Overall, it is a well-crafted, feature-rich plugin with clear architecture and several reusable patterns.
This Neovim plugin renders indentation guides using virtual text, avoiding the 'conceal' feature. It provides highly configurable indentation guides, including support for tabs, mixed indentation, and multiple highlight groups. The architecture is modular: `config.lua` handles a hierarchical configuration system with merging, validation, and buffer-scoped overrides; `hooks.lua` implements an extensible type-safe hook system that allows other plugins or user configurations to modify every aspect of the rendering pipeline; `indent.lua` performs whitespace analysis and classifies each cell into an enum (TAB_START, TAB_FILL, etc.); `scope.lua` uses Treesitter to determine the current scope (e.g., function body) for highlighting; and `virt_text.lua` composes the final virtual text extmarks. The plugin refreshes on cursor movement, option changes, and scrolling, with built-in debouncing. It integrates with Neovim's `listchars` and supports repeat_linebreak for wrapped lines. Test coverage is moderate but exercise key components. The code demonstrates mature Lua engineering with careful Neovim version compatibility and a clean public API.
A Neovim plugin that integrates with AI CLI tools (opencode, claude, cursor-agent, gemini) to provide agentic coding workflows. It allows users to perform semantic searches, replace visual selections, run 'vibe' sessions for code generation, and get tutorials. The plugin manages state, request tracking, logging, and window management. It supports multiple providers, custom rules via SKILL.md files, and file completions. The architecture is modular with clear separation of concerns: providers, operations, extensions, and UI layers.