# hrsh7th/nvim-cmp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/hrsh7th-nvim-cmp).**

9,455 stars · 437 forks · Lua · MIT

## Links

- GitHub: https://github.com/hrsh7th/nvim-cmp
- awesome-repositories: https://awesome-repositories.com/repository/hrsh7th-nvim-cmp.md

## Description

This project is a Lua-based completion engine for Neovim that aggregates real-time text suggestions from multiple data sources into a single interface. It functions as a modular framework for extending the editor with custom completion logic, acting as both a fuzzy text suggestion tool and an interface for the Language Server Protocol.

The engine utilizes a source-agnostic provider interface to standardize how disparate data sources feed candidates into a central logic engine. It employs asynchronous candidate fetching and a non-blocking architecture to retrieve suggestions from external servers and filesystems without freezing the editor interface.

The capability surface covers a wide range of specialized completions, including language server symbols, filesystem paths, buffer text, and git metadata. It also provides integration for large language models for AI-assisted coding, as well as specialized suggestions for CSS styling, academic references, and symbol insertion.

The system includes a dynamic menu for rendering results and a keymap management system for navigating and confirming suggestions.

## Tags

### Development Tools & Productivity

- [Completion Frameworks](https://awesome-repositories.com/f/development-tools-productivity/custom-completion-providers/completion-frameworks.md) — Acts as a modular framework for extending Neovim with custom Lua-based completion logic and external data providers.
- [In-Editor Text Completion](https://awesome-repositories.com/f/development-tools-productivity/in-editor-text-completion.md) — Provides real-time suggestions for code and text while typing in Neovim to reduce keystrokes and errors.
- [Completion Engines](https://awesome-repositories.com/f/development-tools-productivity/completion-engines.md) — Implements a comprehensive Lua-based completion engine that aggregates suggestions from multiple sources into a single interface.
- [Language Server Integrations](https://awesome-repositories.com/f/development-tools-productivity/language-server-integrations.md) — Interfaces with Language Server Protocol servers to provide intelligent code completion and signature help. ([source](https://github.com/hrsh7th/nvim-cmp/wiki/List-of-sources))
- [LSP Clients](https://awesome-repositories.com/f/development-tools-productivity/neovim-plugins/lsp-clients.md) — Connects Neovim to Language Server Protocol servers for intelligent symbols, signatures, and type-aware completions.
- [AI Coding Assistants](https://awesome-repositories.com/f/development-tools-productivity/ai-coding-assistants.md) — Integrates large language models into the editor to provide intelligent, context-aware code suggestions.
- [Context-Aware Text Editing](https://awesome-repositories.com/f/development-tools-productivity/context-aware-text-editing.md) — Scans the active document buffer to extract words and symbols for local text suggestions.
- [Custom Completion Providers](https://awesome-repositories.com/f/development-tools-productivity/custom-completion-providers.md) — Allows customizing how completions are filtered, triggered, and displayed using custom logic functions. ([source](https://github.com/hrsh7th/nvim-cmp#readme))
- [Completion Keymaps](https://awesome-repositories.com/f/development-tools-productivity/custom-key-mappings/modal-keymap-states/completion-keymaps.md) — Provides a dedicated keymap management system for navigating, selecting, and confirming suggestions from the completion list. ([source](https://github.com/hrsh7th/nvim-cmp#readme))
- [Fuzzy Search Interfaces](https://awesome-repositories.com/f/development-tools-productivity/fuzzy-search-interfaces.md) — Implements a fuzzy-matching interface for locating completion candidates across buffers, files, and external results. ([source](https://github.com/hrsh7th/nvim-cmp/wiki/List-of-sources))
- [Workflow Customization](https://awesome-repositories.com/f/development-tools-productivity/modal-editors/workflow-customization.md) — Provides configuration options to match completion triggers and filtering to a developer's specific coding habits.
- [File Path Autocompletion](https://awesome-repositories.com/f/development-tools-productivity/path-autocompletion-tools/file-path-autocompletion.md) — Suggests valid filesystem paths and folder names asynchronously to prevent editor freezing.

### Part of an Awesome List

- [LSP Integration](https://awesome-repositories.com/f/awesome-lists/devtools/lsp-integration.md) — Provides deep integration with the Language Server Protocol to offer intelligent symbol completions and signature help.
- [Completion](https://awesome-repositories.com/f/awesome-lists/devtools/completion.md) — Primary completion engine for Neovim.

### Data & Databases

- [Asynchronous Data Fetching](https://awesome-repositories.com/f/data-databases/asynchronous-data-fetching.md) — Uses non-blocking threads to fetch completion candidates from external servers and filesystems without freezing the editor.
- [Provider Abstraction Layers](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-processing/dataframe-processing/agnostic-interfaces/provider-abstraction-layers.md) — Standardizes how disparate data sources feed completion candidates into the central engine via a common Lua API.
- [Completion Provider Integrations](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/completion-configurators/completion-provider-integrations.md) — Implements a modular interface to integrate multiple completion providers for snippets, paths, and symbols. ([source](https://github.com/hrsh7th/nvim-cmp/wiki/List-of-sources))
- [Fuzzy Search Engines](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/fuzzy-search-engines.md) — Filters completion candidates from buffers, filesystem paths, and external registries using a fuzzy search engine.

### Software Engineering & Architecture

- [Lua-Based Plugin Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/lua-based-plugin-architectures.md) — Uses a Lua-based logic engine for filtering and sorting completion candidates within the Neovim runtime.

### User Interface & Experience

- [Floating Completion Menus](https://awesome-repositories.com/f/user-interface-experience/dynamic-component-rendering/floating-completion-menus.md) — Renders a real-time floating menu of filtered suggestions based on the current cursor position.
- [Keymap Action Dispatchers](https://awesome-repositories.com/f/user-interface-experience/keymap-action-dispatchers.md) — Maps specific keystrokes to internal functions for navigating and confirming suggestions in the completion list.
